欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

surfire单元测试添加jvm参数

发布时间:2023/12/19 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 surfire单元测试添加jvm参数 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
有人配置jvm 参数可以是上面形式: <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.19.1</version><configuration><systemPropertyVariables><jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile></systemPropertyVariables><argLine>${argLine} -XX:NewSize=128m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=768m</argLine></configuration></plugin>


如果添加

-noverify -XX:-UseSplitVerifier

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.19.1</version><configuration><systemPropertyVariables><jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile></systemPropertyVariables><argLine>${argline} -noverify -XX:-UseSplitVerifier -XX:NewSize=128m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=768m</argLine></configuration></plugin>

会报错!!!!!!!!!!!!!!!

去掉${argLine}  改成-noverify -XX:-UseSplitVerifier -XX:NewSize=128m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=768m 才正常!!!!

为什么呢??????????????????????

官网上配置参数:  连接http://maven.apache.org/components/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

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

讲解:

<argLine>${argLine} -XX:NewSize=128m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=768m</argLine></configuration>其实是${argLine}变量和后面参数的拼接,argLine变量上面又没有声明,所以会出错,有的构建直接会取jacoco中默认的argLine变量,因为jacoco插件中会默认声明,且初始是空字符串,所有构建又不会报错。

所以正确方式是没有${argLine}的。
jacoco 源码:


@Overridepublic void executeMojo() {final String name = getEffectivePropertyName();final Properties projectProperties = getProject().getProperties();final String oldValue = projectProperties.getProperty(name);final String newValue = createAgentOptions().prependVMArguments(oldValue, getAgentJarFile());getLog().info(name + " set to " + newValue);projectProperties.setProperty(name, newValue);}String getEffectivePropertyName() {if (isPropertyNameSpecified()) {return propertyName;}if (isEclipseTestPluginPackaging()) {return TYCHO_ARG_LINE;}return SUREFIRE_ARG_LINE;}static final String SUREFIRE_ARG_LINE = "argLine";


总结

以上是生活随笔为你收集整理的surfire单元测试添加jvm参数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。