Java JUnitCore.run()正在忽略@BeforeAll注释

Java JUnitCore.run()正在忽略@BeforeAll注释,java,junit,junit5,Java,Junit,Junit5,我在使用JUnit5库的EclipseOxygen.1a(4.7.1a)中工作,当我使用JUnitCore运行测试类时,似乎没有任何带注释的方法能够正确运行 例如,如果我使用JUnitCore.run(TestClass.class)调用以下类: System.out没有输出,结果对象显示1个测试失败。这意味着这些方法都没有运行。我可以使用JUnit启动器运行测试类,如下所示: final LauncherDiscoveryRequest request = LauncherDiscoveryR

我在使用JUnit5库的EclipseOxygen.1a(4.7.1a)中工作,当我使用JUnitCore运行测试类时,似乎没有任何带注释的方法能够正确运行

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

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

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

然而,这并没有给我任何关于有多少测试通过/失败的反馈,它似乎只是在运行它们。我找不到太多关于在JUnit5中使用JUnitCore的文档,有什么更新的东西我应该使用吗?

您不应该在JUnit5中使用JUnitCore,而应该像分析的第二部分那样使用平台启动器API

launcher#execute(.)
不返回任何值,因此根据JUnit 5文档,您需要使用侦听器来聚合测试执行的结果

execute()方法没有返回值,但您可以轻松地使用侦听器在自己的对象中聚合最终结果。有关示例,请参见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();
...
最终启动器发现请求=
LauncherDiscoveryRequestBuilder.request()的
.选择器(selectClass(TestClass.class))
.build();
final Launcher Launcher=LauncherFactory.create();
final SummaryGeneratingListener=新SummaryGeneratingListener();
registerTestExecutionListeners(监听器);
执行(请求);
TestExecutionSummary summary=listener.getSummary();
long testFoundCount=summary.getTestsFoundCount();
列表失败=summary.getFailures();
...

您不应该在JUnit 5中使用JUnitCore,而应该像在分析的第二部分中那样使用平台启动器API

launcher#execute(.)
不返回任何值,因此根据JUnit 5文档,您需要使用侦听器来聚合测试执行的结果

execute()方法没有返回值,但您可以轻松地使用侦听器在自己的对象中聚合最终结果。有关示例,请参见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();
...
最终启动器发现请求=
LauncherDiscoveryRequestBuilder.request()的
.选择器(selectClass(TestClass.class))
.build();
final Launcher Launcher=LauncherFactory.create();
final SummaryGeneratingListener=新SummaryGeneratingListener();
registerTestExecutionListeners(监听器);
执行(请求);
TestExecutionSummary summary=listener.getSummary();
long testFoundCount=summary.getTestsFoundCount();
列表失败=summary.getFailures();
...