我有一个Jenkins运行,它将构建一个Java项目,我知道其中一些单元测试非常贪婪。
我认为我的Jenkins内存分配仍然有问题,我的一些工作失败了OOM异常,更具体地说是Java Heap Space。
我通过编辑/etc/default/jenkins
文件给了Jenkins本身2GB。为了确保JUnit-Tests也有足够的RAM,我通过Jenkins GUI将Global MAVEN_OPTS
赋值为-Dmaven.surefire.heap=12g
。
这应该足以运行所有测试。但构建仍然失败。我是Jenkins的新手,所以我很感激指针可能是这里的问题。
答案 0 :(得分:1)
减少运行测试的堆影响的一种方法是在单独的JVM中运行所有jUnit测试。这确实与速度有关,但是,这意味着每个单独的测试类需要更长的时间。每个方法的时间将保持不变,只需为每个测试类设置额外的时间。
您可以在maven surefire插件中更改此设置,将这些行添加到您的pom中的设置中:
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
</configuration>
有关此主题的更多信息,请参见maven page for forking and parallel test execution。