gpt4 book ai didi

java - 使用 runClasses(),如果测试类是公共(public)的,JUnit 测试在超时后不会关闭

转载 作者:行者123 更新时间:2023-11-29 08:06:10 25 4
gpt4 key购买 nike

似乎 runClasses() 即使在测试超时失败后也不会终止正在测试的代码。

SSCCE:

import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;

class Main {
public static void main(String[] args) {
Class<?>[] classes = { PublicTest.class };
Result result = JUnitCore.runClasses(classes);
System.out.println("Num tests: " + result.getRunCount());
System.out.println("Time: " + result.getRunTime());
System.out.println("Failure: " + result.getFailures().get(0));
}
}

测试类:

import org.junit.Test;

public class PublicTest {
@Test(timeout=10)
public void loop() {
while(true) {}
}
}

如何让代码终止?

最佳答案

JUnitCore 在某些时候确实会创建一个永远不会结束的新线程。 JUnit 的 main() 实现避免在完成其工作时调用 System.exit() 卡住。这对我来说似乎有点不整洁,但对您来说可能是最好的解决方案。

关于java - 使用 runClasses(),如果测试类是公共(public)的,JUnit 测试在超时后不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088830/

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