Java:如何测试调用System.exit()的方法?
我有一些应调用System.exit()
某些输入的方法。不幸的是,测试这些情况会导致JUnit终止!将方法调用放在新的Thread中似乎无济于事,因为System.exit()
终止JVM不仅终止当前线程。有什么通用的模式可以处理吗?例如,我可以用存根替换System.exit()
吗?
[编辑]有问题的类实际上是我要在JUnit中测试的命令行工具。也许JUnit根本不是适合该工作的工具?欢迎提出补充回归测试工具的建议(最好是与JUnit和EclEmma很好地集成在一起的工具)。
回答:
库系统规则具有一个称为ExpectedSystemExit
的JUnit规则。使用此规则,你可以测试调用System.exit(...
)的代码:
public void MyTest { @Rule
public final ExpectedSystemExit exit = ExpectedSystemExit.none();
@Test
public void systemExitWithArbitraryStatusCode() {
exit.expectSystemExit();
//the code under test, which calls System.exit(...);
}
@Test
public void systemExitWithSelectedStatusCode0() {
exit.expectSystemExitWithStatus(0);
//the code under test, which calls System.exit(0);
}
}
以上是 Java:如何测试调用System.exit()的方法? 的全部内容, 来源链接: utcz.com/qa/429484.html