gpt4 book ai didi

java - 如何在 JUnit 测试用例中获取传递给 Runtime.getRuntime.exit(value) 的值

转载 作者:行者123 更新时间:2023-11-29 05:57:32 26 4
gpt4 key购买 nike

我必须在 JUnit 中为 Class 编写一个测试用例,我们称之为 C1,它在内部调用 Runtime.getRuntime。退出(某个值)

C1 有一个 main 方法,它接受一些 arguments 并创建一个 CommandLine 然后根据在传递的 arguments 上执行特定任务。

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

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

如何获取 JUnit 测试用例中的 somevalue

最佳答案

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

@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);
}

关于java - 如何在 JUnit 测试用例中获取传递给 Runtime.getRuntime.exit(value) 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com