JUnitCore.run() 忽略@BeforeAll 注释
JUnitCore.run() is ignoring @BeforeAll annotations
我正在使用 JUnit 5 库在 Eclipse Oxygen.1a (4.7.1a) 中工作,当我 运行 使用 JUnitCore 的测试 class。
例如,如果我使用 JUnitCore.run(TestClass.class)
调用以下 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 个测试失败。这意味着 none 这些方法 运行。我可以使用 JUnit Launcher 来 运行 测试 class 像这样:
final LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(TestClass.class)).build();
final Launcher launcher = LauncherFactory.create();
launcher.execute(request);
然而,这并没有给我任何关于有多少测试 passed/failed 的反馈,它似乎只是 运行 它们。我找不到很多关于将 JUnitCore 与 JUnit5 一起使用的文档,有没有我应该使用的更新的东西?
您不应将 JUnitCore
与 JUnit 5 一起使用,而应像您在分析的第二部分中所做的那样使用平台启动器 API。
launcher#execute(.)
没有 return 任何值,因此您需要根据 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();
...
我正在使用 JUnit 5 库在 Eclipse Oxygen.1a (4.7.1a) 中工作,当我 运行 使用 JUnitCore 的测试 class。
例如,如果我使用 JUnitCore.run(TestClass.class)
调用以下 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 个测试失败。这意味着 none 这些方法 运行。我可以使用 JUnit Launcher 来 运行 测试 class 像这样:
final LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(TestClass.class)).build();
final Launcher launcher = LauncherFactory.create();
launcher.execute(request);
然而,这并没有给我任何关于有多少测试 passed/failed 的反馈,它似乎只是 运行 它们。我找不到很多关于将 JUnitCore 与 JUnit5 一起使用的文档,有没有我应该使用的更新的东西?
您不应将 JUnitCore
与 JUnit 5 一起使用,而应像您在分析的第二部分中所做的那样使用平台启动器 API。
launcher#execute(.)
没有 return 任何值,因此您需要根据 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();
...