我必须写一个测试案例JUnit
的Class
可以把它叫做C1
其内部调用Runtime.getRuntime.exit(somevalue)
。
类C1
有一个main
,它接受了一些方法arguments
和创建CommandLine
,然后根据传入arguments
做了具体任务。
现在执行调用后,所有任务Runtime.getRuntime.exit(somevalue)
。 所述somevalue
定义任务是否已成功执行(意味着someValue中为0),或有错误(意味着someValue中为1)。
有见及此JUnit测试情况下,我必须得到这个somevalue
,并检查它是否是期望somevalue
与否。
我如何获得somevalue
的JUnit测试案例。
您可以覆盖安全管理器捕捉到退出代码,如果你使用一个模拟框架会比较简洁:
@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);
}
文章来源: How to get the value that is passed to Runtime.getRuntime.exit(value) in a JUnit test case