如何在Java中测试调用System.exit()的场景?
可能重复:如何在Java中测试调用System.exit()的场景?,java,unit-testing,static,mocking,mockito,Java,Unit Testing,Static,Mocking,Mockito,可能重复: 在特定场景中,我想测试应用程序是否进行函数调用以发送电子邮件,然后调用System.exit(0) 这是一个Java应用程序,Mockito用于模拟 我的测试当前看起来像这样: testSendsEmailInScenario() { // set up foo.bar(mock); ArgumentCaptor<HashMap> argument = ArgumentCaptor.forClass(HashMap.class); verify(mo
在特定场景中,我想测试应用程序是否进行函数调用以发送电子邮件,然后调用
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
}
testSendsEmailInScenario(){
//设立
富吧(模拟);;
ArgumentCaptor参数=ArgumentCaptor.forClass(HashMap.class);
验证(mockEmailDeliveryManager).send(argument.capture());
Map argMap=argument.getValue();
//测试地图是否包含正确的内容
}
所以这不起作用,因为在应用程序中调用send
之后,调用了System.exit()
,这将终止测试,而测试不会成功或失败
由于exit()。那么,我该如何:
为了进行此测试,暂停退出行为
编写第二个测试,以确认退出已发生。(仅当调用了System.exit()
时测试才会成功,否则将失败。)
我使用以下非常简单的场景:我使用Groovy-MockFor,它可以为您保证调用某个方法。我尝试过,它甚至可以与系统类一起工作。我使用以下非常简单的场景:我使用Groovy-MockFor,它可以保证调用某些方法。我尝试过,它甚至可以与系统类一起工作。很有趣,但我不希望引入新的依赖关系。不过我会记住的。很有趣,但我希望不会带来新的依赖。不过我会记住的。