Это моя первая попытка использования EasyMock. Таким образом, я пытался издеваться в void
метод:Mocking a Void method
protected void onStop() {
logger.info("Stopping ReporterService.");
if (reporter != null) {
reporter.stop();
reporter = null;
}
}
я следовал несколько учебников в Интернете, и я написал это:
ReporterService reporterService1 = EasyMock.createMock(ReporterService.class);
reporterService1.onStop();
EasyMock.expectLastCall().once();
replay(reporterService1);
//EasyMock.replay(reporterService1);
assertNull(Whitebox.getInternalState(reporterService1, "reporter"));
EasyMock.verify(reporterService1);
Но потом я получил это:
java.lang.AssertionError:
Expectation failure on verify:
ReporterService.onStop(): expected: 1, actual: 0
Я искал в Интернете, но я понятия не имею, почему он это говорит. Цените помощь.
Кроме того, только ради понимания, я проверил это вручную, и это работает, я просто хочу, чтобы проверить его с помощью EasyMock:
ReporterService reporterService = new ReporterService();
Reporter reporter = new Reporter(null,null,null);
Whitebox.setInternalState(reporterService , "reporter", reporter);
assertNotNull(Whitebox.getInternalState(reporterService, "reporter"));
reporterService.onStop();
assertNull(Whitebox.getInternalState(reporterService, "reporter"));
Непонятно, что вы на самом деле пытаетесь проверить. Вы проверяете, что репортер остановлен? Если это так, вы должны издеваться над репортером. – chrylis
На первый взгляд ваш тестовый код выглядит хорошо. Таким образом, следующее, что нужно посмотреть ... это то, чего не хватает в вашем вопросе: тестируемый код. Даже если вы уверены, что Whitebox.getInternalState() ... должен вызывать onStop в своем аргументе ... вам лучше разместить этот код здесь (см. Http://stackoverflow.com/help/mcve). Без этого мы не можем помочь! – GhostCat