JUnit Mockito всегда возвращает false в assertEquals при сравнении логических значений - PullRequest
0 голосов
/ 03 октября 2018

JUnit Mockito всегда возвращает false в assertEquals при сравнении логических значений.

 @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 ]

0 голосов
/ 03 октября 2018

Вы не издеваетесь над поведением.По умолчанию вызов логического метода для макета возвращает false.

Чтобы смоделировать искомое поведение:

Mockito.when(userService.isAccountBlocked("username")).thenReturn(true);
0 голосов
/ 03 октября 2018

Нет JUnit assertEquals с 2 логическими значениями, поэтому вам нужно использовать другой метод - assertTrue :

Утверждает, что условие истинно.Если это не так, он генерирует ошибку AssertionError без сообщения.

assertTrue(accountBlocked);

Но в вашем случае ваш класс является ложным, и поэтому по умолчанию весь его метод с логическим возвращаемым значением вернет false

По умолчанию для всех методов, которые возвращают значение, макет будет возвращать либо ноль, либо значение примитивной / примитивной оболочки, либо пустую коллекцию, в зависимости от ситуации.Например, 0 для int / Integer и false для логического / Boolean.

Так что, если вы не смоделируете поведение метода с помощью when, вы можете assertFalse *

assertFalse(accountBlocked);
...