模拟 Void 方法
Mocking a Void method
这是我第一次尝试使用 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:
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"));
我认为这应该可以解决您的问题。
1.You 应首先使用 setInternelState 设置报告对象
2.your 方法需要调用 reporter.stop() 因此您的测试应该需要该方法。
看下面的代码。您可以在末尾添加断言。
ReporterService reporterService1 = EasyMock.createMock(ReporterService.class);
Reporter reporter = EasyMock.createMock(Reporter.class);
Whitebox.setInternalState(reporterService , "reporter", reporter);
reporter.onStop();
PowerMock.expectLastCall();
EasyMock.replay(reporterService1,reporter);
reporterService1.onStop();
EasyMock.verify(reporterService1,reporter);
这是我第一次尝试使用 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:
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"));
我认为这应该可以解决您的问题。 1.You 应首先使用 setInternelState 设置报告对象 2.your 方法需要调用 reporter.stop() 因此您的测试应该需要该方法。
看下面的代码。您可以在末尾添加断言。
ReporterService reporterService1 = EasyMock.createMock(ReporterService.class);
Reporter reporter = EasyMock.createMock(Reporter.class);
Whitebox.setInternalState(reporterService , "reporter", reporter);
reporter.onStop();
PowerMock.expectLastCall();
EasyMock.replay(reporterService1,reporter);
reporterService1.onStop();
EasyMock.verify(reporterService1,reporter);