JUnit Mockito在比较布尔值时总是在assertEquals中返回false。
@RunWith(MockitoJUnitRunner.class)
public class UserServiceTest {
@Mock
private UserService userService;
@Mock
private UserRepository userRepository;
@Test
public void testIsAccountBlocked() {
Boolean accountBlocked = userService.isAccountBlocked("username");
assertEquals(true, accountBlocked);
}
}
即使用户名被阻止,此方法也始终返回 false。为什么会这样?
没有 JUnit assertEquals with 2 个布尔值,所以你需要使用不同的方法 - assertTrue:
断言条件为真。如果不是,它会抛出一个没有消息的断言错误。
assertTrue(accountBlocked);
但是在您的情况下,您的类被模拟,因此默认情况下,所有带有布尔返回值的方法都将返回 false
默认情况下,对于返回值的所有方法,mock 将根据需要返回 null、基元/基元包装器值或空集合。例如,0 表示整数/整数,假表示布尔值/布尔值。
因此,除非您使用when
模拟方法行为,否则您可以断言False。
assertFalse(accountBlocked);
你不是在嘲笑任何行为。默认情况下,在模拟上调用布尔方法返回 false。
要模拟您正在寻找的行为:
Mockito.when(userService.isAccountBlocked("username")).thenReturn(true);