JUnit 5测试用例未执行

我在NetBeans 8.2中的一个新的干净Maven项目中创建了这个测试:

import static org.junit.jupiter.api.Assertions.fail; import org.junit.jupiter.api.Test; public class JUnit501Test { @Test void firstTest() { fail("epicly"); } } 

如果我运行测试,则会显示日志

 ------------------------------------------------------- TESTS ------------------------------------------------------- Running JUnit501Test Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

我的pom.xml包含这个依赖项:

  org.junit.jupiter junit-jupiter-api 5.0.1 test  

什么可能导致JUnit 5忽略测试方法?

更新:我添加了surefire插件,这是完整的pom.xml:

   4.0.0 com.timeshuttle Junit5Test 1.0-SNAPSHOT jar   org.junit.jupiter junit-jupiter-api 5.0.1 test   org.junit.jupiter junit-jupiter-engine 5.0.1 test    UTF-8 1.8 1.8     org.apache.maven.plugins maven-surefire-plugin 2.20.1   org.junit.platform junit-platform-surefire-provider 1.0.1   org.junit.jupiter junit-jupiter-engine 5.0.1       

输出更改为:

 ------------------------------------------------------- TESTS ------------------------------------------------------- Results: Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 ------------------------------------------------------------------------ BUILD FAILURE ------------------------------------------------------------------------ Total time: 1.672s Finished at: Mon Oct 16 16:19:04 CEST 2017 Final Memory: 6M/15M ------------------------------------------------------------------------ Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-cli) on project Junit5Test: There are test failures. Please refer to F:\Sandbox_Java\justin\Junit5Test\target\surefire-reports for the individual test results. Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream. There was an error in the forked process org.apache.maven.surefire.report.RunListener.testSetStarting(Lorg/apache/maven/surefire/report/ReportEntry;)V org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process org.apache.maven.surefire.report.RunListener.testSetStarting(Lorg/apache/maven/surefire/report/ReportEntry;)V at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:673) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:535) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:280) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1124) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:954) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:832) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) -> [Help 1] 

surefire-reports文件夹包含两个“.dump”文件。 第一个内容:

 # Created on 2017-10-16T16:17:32.959 java.lang.NoSuchMethodError: org.apache.maven.surefire.report.RunListener.testSetStarting(Lorg/apache/maven/surefire/report/ReportEntry;)V at org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeSingleClass(JUnitPlatformProvider.java:137) at org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:126) at org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:105) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:373) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:334) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:119) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:407) 

确保您的maven-surefire-plugin配置正确:

  org.apache.maven.plugins maven-surefire-plugin 2.19.1     org.junit.platform junit-platform-surefire-provider 1.0.1   org.junit.jupiter junit-jupiter-engine 5.0.1    ${argLine}   

并且您不需要引擎作为依赖项,因此您可以从标记中删除它: –

  org.junit.jupiter junit-jupiter-engine 5.0.1 test  

注意 :关于使用maven运行测试的Junit5的官方文档指定使用surefire 2.19.1,因为插件的2.20发行版本中存在内存泄漏。