JUnit Mockito在比较布尔值时总是在assertEquals中返回false



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);

相关内容

  • 没有找到相关文章

最新更新