Я уже видел этот ТАК вопрос , но все же он не дает решения того, что я пытаюсь сделать.
Я использую EventBus (от greenrobot) для отправки сообщений через мое приложение. Я хотел бы иметь возможность протестировать мое приложение для подтверждения того, что сообщение было отправлено на шину. Только это.
Вот класс, который я хотел бы протестировать с помощью одного метода, отправляющего сообщение:
public class CxManager {
public void postMessage(JsonObject data) {
EventBus.getDefault().post(new MyCustomEvent(data));
}
}
А вот тест, который я пробовал, но он не работает:
@RunWith(MockitoJUnitRunner.class)
public class CxManagerTest {
@Mock EventBus eventBus;
private CxManager cxManager;
private JsonObject testJsonObject;
@Before public void setUp() throws Exception {
cxManager = new CxManager();
testJsonObject = new JsonObject();
testJsonObject.addProperty("test", "nada");
}
@Test public void shouldPass() {
cxManager.postMessage(testJsonObject);
verify(eventBus).post(new MyCustomEvent(testJsonObject));
}
}
Я написал этот тест, даже зная, что он может быть неудачным, потому что EventBus использует Singleton для отправки сообщений, и я не знаю, как проверить выполняемый метод singleton.
Кроме того, это всего лишь часть большого проекта. Соответствующие штуки. И я хотел бы проверить правильность публикации сообщений в соответствии с различными взаимодействиями