[英]JUnit Mockito always returns false in assertEquals when comparing boolean values
比较布尔值时,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。 为什么会这样?
没有2个布尔值的JUnit assertEquals ,因此您需要使用其他方法-assertTrue :
断言条件为真。 如果不是,则抛出AssertionError而不显示消息。
assertTrue(accountBlocked);
但是在您的情况下,您的类是模拟的,因此默认情况下,其所有带有布尔值返回值的方法都将返回false
默认情况下,对于所有返回值的方法,模拟将酌情返回null,原始/原始包装器值或空集合。 例如,对于int / Integer为0,对于boolean / Boolean为false。
因此,除非您when
可以断言的情况下使用方法行为来模拟它
assertFalse(accountBlocked);
您没有嘲笑任何行为。 默认情况下,在模拟对象上调用布尔方法将返回false。
要模拟您要寻找的行为:
Mockito.when(userService.isAccountBlocked("username")).thenReturn(true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.