单元测试-如何测试Java中调用System.exit()的场景



可能重复:
Java:如何测试调用System.exit()的方法?

在某个场景中,我想测试应用程序是否调用函数来发送电子邮件,然后调用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来模拟它。那么我该怎么做:

  1. 为了这个测试,暂停正在退出的行为
  2. 编写第二个测试,以确认退出已发生。(仅当调用System.exit()时才成功的测试,否则将失败。)

我使用以下非常简单的场景:我使用Groovy-MockFor,它可以为您保证调用某个方法。我试过了,它甚至可以用于System类。

相关内容

  • 没有找到相关文章

最新更新