分叉的 VM 没有正确说再见就终止了。 VM 崩溃或调用 System.exit

The forked VM terminated without properly saying goodbye. VM crash or System.exit called

我写测试。我正在使用 Cucumber 6.8.1TestNG 7.0.0。对于并行化,我连接了 maven-surefire-plugin 2.22.2 但我现在没有并行测试,目前我是 运行一个接一个地测试所有测试.

大多数测试都运行良好(大约 45 个测试)。但是有几个有问题的测试,即:当 运行 进行这样的测试时,我得到错误 “分叉的 VM 没有正确说再见就终止了。VM 崩溃或 System.exit 调用?”。 =36=]全文如下:

我在google中搜索过这个错误。我读过,它与 maven-surefire-plugin 相关联。在互联网上人们提供了不同的方法来解决这个问题。比如修改maven插件的版本。目前我有 2.22.2 版。我尝试了不同的版本:3.0.0-M5、3.0.0-M4、3.0.0-M3、3.0.0-M2、3.0.0-M1、2.22.1、2.22.0、2.21.0、2.20。结果是一样的:我得到了错误。

我也试过写论据 -Xmx1024m -XX: MaxPermSize = 256m 在 maven-surefire-plugin 配置中。它也没有帮助。

而且我也不认为这是由于某些资源不足造成的。在运行这些有问题的测试中,监控并没有表现出特别大的资源消耗:

你能给我一些其他的想法吗?

根据您的日志,测试崩溃,有一个测试class没有正确完成。尝试找出调用的库或代码 System.exit()Runtime.getRuntime.halt()。 由于 OSS 库退出过程的实现,人们在系统退出时遇到了这些问题。请参阅 hint in stackowerflow 并尝试在 Java.

中借助 SystemManager 找出邪恶