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发行版本中存在内存泄漏。