【发布时间】:2016-11-08 18:38:07
【问题描述】:
这是我第一次尝试使用 EasyMock。所以,我一直在尝试模拟一个void 方法:
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:
验证时预期失败:
ReporterService.onStop():预期:1,实际: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"));
【问题讨论】:
-
目前还不清楚您实际上要测试什么。你在测试记者被拦住了吗?如果是这样,你应该嘲笑记者。
-
乍一看,您的测试代码看起来不错。因此,接下来要研究的...是您的问题中缺少的东西:被测代码。即使您确定 Whitebox.getInternalState() ... 应该在其参数上调用 onStop ... 您最好在此处发布该代码(请参阅 stackoverflow.com/help/mcve )。没有它,我们无能为力!