我有大量的junit,运行它们需要很长时间。但是CPU和内存利用率只有30%左右。我不能在同一个 jvm 的并行线程中运行 junit,因为它们不是线程安全的,而且不可能修复它们。据我所知,junit ant 任务启动单独的 jvm 来运行 junit。是否可以从ant为junit运行几个jvm?我认为这样的解决方案可以显着减少执行时间。
目前我使用这样的代码用 ant 运行它们:
<for param="bundle" keepgoing="true">
<path>
<dirset dir="${testdir}/plugins">
<depth max="0"/>
</dirset>
</path>
<sequential>
<echo message="Running tests in bundle @{bundle}"/>
<junit outputtoformatters="no" printsummary="yes" failureproperty="test.failed" maxmemory="512m" fork="yes" forkmode="once">
<classpath>
<path refid="tests.classpath" />
</classpath>
<formatter type="xml" />
<batchtest todir="${junit.result.dir}">
<fileset dir="@{bundle}/src">
<patternset refid="test.sources" />
</fileset>
</batchtest>
</junit>
</sequential>