【发布时间】:2011-09-14 05:45:40
【问题描述】:
在某个场景下,我想测试应用程序调用函数发送邮件,然后调用System.exit(0)
这是一个 Java 应用程序,Mockito 用于模拟。
我的测试目前看起来像这样:
testSendsEmailInScenario() {
// set up
foo.bar(mock);
ArgumentCaptor<HashMap> argument = ArgumentCaptor.forClass(HashMap.class);
verify(mockEmailDeliveryManager).send(argument.capture());
Map<String,String> argMap = argument.getValue();
// Test that map contains the right stuff
}
所以这不起作用,因为在应用程序中调用send 之后,调用了System.exit(),这会终止测试,而测试不会成功或失败。
由于exit() 是System 的静态方法,我无法用Mockito 模拟它。那我该怎么做:
- 为了此次测试,暂停现有行为。
- 编写第二个测试以确认退出已发生。 (仅当调用
System.exit()时测试成功,否则失败。)
【问题讨论】:
标签: java unit-testing static mocking mockito