我正在使用Java8上的maven + testng从linux命令行运行一系列性能测试。
这些测试中的大多数都会运行,直到它们破坏JVM(通常是内存耗尽),此时我手动设置并从新的JVM运行另一个测试。
我希望能够自动链接多个测试以反复运行,但是当前一个测试使JVM处于不可用状态时,我不知道如何实现此目的。
我有没有办法通过Java / Maven / Linux /其他程序/框架重置损坏的JVM(或其他类似的东西)?
我可以访问Oracle的JDK或OpenJDK,但如果需要,我可以说服服务器管理员安装另一个JDK。
答案 0 :(得分:2)
maven-surefire-plugin
允许测试在分叉的JVM中运行。信息为on the plugin page,但您需要以下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
</configuration>
</plugin>
这将为每次测试运行创建一个新的JVM。您可以通过更改forkCount
来调整此值(例如,确保测试不会并行运行或执行)并使用reuseForks
来确定是否应该回收JVM。