gpt4 book ai didi

maven - Mockito、jacoco 和 surefire 导致内存不足

转载 作者:行者123 更新时间:2023-12-04 18:31:51 28 4
gpt4 key购买 nike

我正在使用 mockito 1.8.3、jacoco 0.72 和 maven 3.0.5 surefire 插件(2.12.4)来执行单元测试并生成覆盖率报告,它工作正常。

随着越来越多的测试被添加,它开始不起作用。我在测试执行过程中不断遇到内存不足错误,并且找不到找出问题所在的方法。

我有大约 1800 多个使用 mockito 作为模拟工具的测试用例。如果我在测试阶段之前使用“org.jacoco:jacoco-maven-plugin:prepare-agent”在 maven 测试期间不运行 jacoco,它工作正常,但只要我添加 jacoco 代理,我就会遇到永久代已满的 OOO 问题。

我已经通过修改 MAVEN_OPTS(它不应该工作,因为surefire 将派生一个新进程)和surefire argline 参数在 pom 中添加到 2GB,但它没有多大帮助。

我尝试通过向surefire插件添加参数来在发生OOO时获取核心转储,但从未在任何文件夹中看到转储文件。我怀疑我的 JVM 设置对 surefire 插件不起作用,但不确定出了什么问题。有谁可以帮我一个忙吗?谢谢。

            <plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<inherited>true</inherited>
<configuration>
<properties>
<property>
<name>argLine</name> <value>-server -ea -XX:-UseSplitVerifier -XX:MaxPermSize=2g -Xmx3g -XX:+HeapDumpOnOutOfMemoryError </value>
</property>
<property>
<name>forkMode</name>
<value>once</value>
</property>
<property>
<name>reportFormat</name>
<value>plain</value>
</property>
<property>
<name>skipTests</name>
<value>${maven.test.skip}</value>
</property>
</properties>
</configuration>
</plugin>

最佳答案

您需要为 maven-surefire-plugin 设置内存像下面这样:

<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
</configuration>
</plugin>
[...]
</plugins>

关于maven - Mockito、jacoco 和 surefire 导致内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807076/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com