Наш обычный способ написания модульных тестов - использовать издевается через Mockito. Однако LocalBroadcastManager
по какой-то необъяснимой причине является окончательный, что не позволяет Mockito расширять его, что мешает нам сделать его mock
/ spy
...
-> Как я могу написать модульные тесты для класса, содержащего LocalBroadcastManager?
Я хотел бы, например, проверить, что при возникновении некоторых условий и т. д. Рассылаются определенные трансляции (содержащие определенные дополнения).
Используйте PowerMock:
Запустите свой тестовый класс с PowerMock:
@RunWith(PowerMockRunner.class)
@PrepareForTest({LocalBroadcastManager.class})
Затем, где бы вы ни захотели в своем тесте издеваться над статическим методом, сделайте следующее:
PowerMockito.mockStatic(LocalBroadcastManager.class);
LocalBroadcastManager instance = mock(LocalBroadcastManager.class);
PowerMockito.when(LocalBroadcastManager.getInstance(context)).thenReturn(instance);
Убедитесь, что вы делаете это поверх своего класса: @RunWith (PowerMockRunner.class) @PrepareForTest ({LocalBroadcastManager.class})
Это сработало: D Не могли бы вы обновить ответ, чтобы сделать его более понятным для других? Спасибо!
Когда я вызываю PowerMockito.mockStatic (LocalBroadcastManager.class), возникает ошибка: невозможно создать подкласс класса конечного класса android.support.v4.content.LocalBroadcastManager