Как смоделировать метод, который вызывается в методе тестирования для Android? - PullRequest
0 голосов
/ 18 апреля 2019

Я пишу тесты для своего приложения для Android, и мне нужно смоделировать метод из моего класса, который вызывается в методе, который я тестирую.Это мой класс:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
.....
 @Override
public void onMessageReceived(RemoteMessage remoteMessage) {
            if (!isAppOnForeground(this)) {
                DoSomeThing();
            }
        }
    }

public boolean isAppOnForeground(Context context) {
       return isAppOnForeground;
    }
}

Я хочу проверить onMessageReceived метод, когда isAppOnForeground возвращает true и false.

Я пытаюсь

@Test
public void onMessageReceived() {
MyFirebaseMessagingService mockMyFirebaseMessagingService = org.mockito.Mockito.mock(MyFirebaseMessagingService.class);
when(mockMyFirebaseMessagingService.isAppOnForeground(any(Context.class))).thenReturn(false);
mockMyFirebaseMessagingService.onMessageReceived(remoteMessage);
...
}

Но когдаЯ запускаю этот тест, я не вижу вызова в методе onMessageReceived (точки останова не работают).Как я могу издеваться isAppOnForeground и звонить onMessageReceived?

1 Ответ

1 голос
/ 18 апреля 2019

Вы не видите, onMessageReceived() метод запущен, потому что это не так.

MyFirebaseMessagingService mockMyFirebaseMessagingService = org.mockito.Mockito.mock(MyFirebaseMessagingService.class);

Вы создаете макет, пустой макет, который ничего не знает о реализации исходного класса.

Вы хотите использовать spy() вместо. Попробуйте это:

MyFirebaseMessagingService myFirebaseMessagingService = new MyFirebaseMessagingService();
MyFirebaseMessagingService mockMyFirebaseMessagingService = org.mockito.Mockito.spy(myFirebaseMessagingService);
doReturn(false).when(mockMyFirebaseMessagingService).isAppOnForeground(any(Context.class));
mockMyFirebaseMessagingService.onMessageReceived(remoteMessage);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...