如何在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,它可以保证调用某些方法。我尝试过,它甚至可以与系统类一起工作。

    很有趣,但我不希望引入新的依赖关系。不过我会记住的。很有趣,但我希望不会带来新的依赖。不过我会记住的。