Как я могу написать модульные тесты для классов с помощью LocalBroadcastManager?

Наш обычный способ написания модульных тестов - использовать издевается через Mockito. Однако LocalBroadcastManager по какой-то необъяснимой причине является окончательный, что не позволяет Mockito расширять его, что мешает нам сделать его mock / spy ...

-> Как я могу написать модульные тесты для класса, содержащего LocalBroadcastManager?

Я хотел бы, например, проверить, что при возникновении некоторых условий и т. д. Рассылаются определенные трансляции (содержащие определенные дополнения).

3
0
561
1

Ответы 1

Используйте PowerMock:

Запустите свой тестовый класс с PowerMock:

@RunWith(PowerMockRunner.class) 
@PrepareForTest({LocalBroadcastManager.class})

Затем, где бы вы ни захотели в своем тесте издеваться над статическим методом, сделайте следующее:

    PowerMockito.mockStatic(LocalBroadcastManager.class);
    LocalBroadcastManager instance = mock(LocalBroadcastManager.class);
PowerMockito.when(LocalBroadcastManager.getInstance(context)).thenReturn(instance);

Когда я вызываю PowerMockito.mockStatic (LocalBroadcastManager.class), возникает ошибка: невозможно создать подкласс класса конечного класса android.support.v4.content.LocalBroadcastManager

Víctor García 12.12.2018 19:40

Убедитесь, что вы делаете это поверх своего класса: @RunWith (PowerMockRunner.class) @PrepareForTest ({LocalBroadcastManager.class})

LoveForDroid 12.12.2018 20:23

Это сработало: D Не могли бы вы обновить ответ, чтобы сделать его более понятным для других? Спасибо!

Víctor García 12.12.2018 20:30

Другие вопросы по теме