繁体   English   中英

比较布尔值时,JUnit Mockito在assertEquals中始终返回false

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM