gpt4 book ai didi

java - JUnitCore.run() 忽略 @BeforeAll 注释

转载 作者:行者123 更新时间:2023-12-01 20:07:09 25 4
gpt4 key购买 nike

我正在使用 JUnit 5 库在 Eclipse Oxygen.1a (4.7.1a) 中工作,当我使用 JUnitCore 运行测试类时,我的注释方法似乎都没有正确运行。

例如,如果我使用 JUnitCore.run(TestClass.class) 调用以下类:

public class TestClass {

@BeforeAll
public static void beforeAll() {
System.out.println("In TestClass.beforeAll");
}

@Test
public void testMethod() {
System.out.println("In TestClass.testMethod");
}

@AfterAll
public static void afterAll() {
System.out.println("In TestClass.afterAll");
}

}

System.out 没有输出,并且 Result 对象显示 1 个测试失败。这意味着这些方法都没有运行。我可以使用 JUnit Launcher 来运行测试类,如下所示:

final LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(TestClass.class)).build();
final Launcher launcher = LauncherFactory.create();
launcher.execute(request);

但是,这并没有给我任何有关通过/失败的测试数量的反馈,它似乎只是运行它们。我找不到太多关于将 JUnitCore 与 JUnit5 结合使用的文档,是否有我应该使用的更新内容?

最佳答案

您不应该将 JUnitCore 与 JUnit 5 一起使用,而应使用平台启动器 API,就像您在分析的第二部分中所做的那样。

launcher#execute(.) 不返回任何值,因此您需要使用监听器来聚合测试执行的结果,如 JUnit 5 文档 7.1.2 Executing Tests 所示。 .

There is no return value for the execute() method, but you can easily use a listener to aggregate the final results in an object of your own. For an example see the SummaryGeneratingListener.

例如,您可以生成一个TestExecutionSummary,它确实可以为您提供您想要收集的信息:

final LauncherDiscoveryRequest request = 
LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(TestClass.class))
.build();

final Launcher launcher = LauncherFactory.create();
final SummaryGeneratingListener listener = new SummaryGeneratingListener();

launcher.registerTestExecutionListeners(listener);
launcher.execute(request);

TestExecutionSummary summary = listener.getSummary();
long testFoundCount = summary.getTestsFoundCount();
List<Failure> failures = summary.getFailures();
...

关于java - JUnitCore.run() 忽略 @BeforeAll 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250355/

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