使用SureFire插件时遇到麻烦: - "分叉的虚拟机终止而没有说再见.虚拟机崩溃或System.exit被调用?"

joh*_*ode 14 java junit powermock maven-surefire-plugin

在发生异常后运行单元测试时:

org.apache.maven.lifecycle.LifecycleExecutionException: ExecutionException; nested exception is java.util.concurrent.ExecutionException: java.lang.RuntimeException: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Ste*_*n C 6

有什么建议?

异常的错误消息可能解释了发生了什么.你的一个单元测试有

  • System.exit(),或
  • 打破了单元测试线束,或
  • 做了一些已经崩溃了它运行的JVM的东西.

我们无法告诉你它是哪一个.

(我想这个问题正在报告,因为maven JVM期望子JVM将单元测试结果写入其标准输出.它从孩子那里得到的是错过了说单元测试的消息(或其他)已经完成了.有可能根本原因可能与建议的替代方案有所不同,但我对此表示怀疑,这是毫无意义的推测......)

对于违规单元测试,日志文件中可能存在更多信息.检查/他们.