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

回到顶部