1

我必须编写一个测试用例,JUnitClass我们C1在内部调用它Runtime.getRuntime.exit(somevalue)

该类C1有一个main接受一些的方法,然后arguments创建一个CommandLine然后根据传递arguments的特定任务。

现在执行后的所有任务都调用一个Runtime.getRuntime.exit(somevalue). 定义任务是成功执行somevalue(意味着某个值为 0)还是有错误(意味着某个值为 1)。

在此的 JUnit 测试用例中,我必须得到它somevalue并检查它是否是所需的somevalue

我如何somevalue在 JUnit 测试用例中获得。

4

1 回答 1

3

您可以覆盖安全管理器以捕获退出代码,如果您使用模拟框架会更简洁:

@Test
public void when_main_is_called_exit_code_should_be_1() throws Exception {
    final int[] exitCode = new int[1];
    System.setSecurityManager(new SecurityManager() {
        @Override
        public void checkExit(int status) {
            exitCode[0] = status;
            throw new RuntimeException();
        }});

    try { main(); } catch(Exception e) {}

    assertEquals(exitCode[0], 1);
}

public static void main() {
    System.exit(1);
}
于 2012-07-16T13:33:38.700 回答