mvn测试用例使用surefire插件,jvm参数未载入的原因

在编写自动化测试代码时,使用maven surefire插件进行单元测试,遇到dubbo配置文件无法找到的问题。单独运行Junit测试正常,但System.getProperties()中没有dubbo配置。通过设置MAVEN_OPTS环境变量和在surefire插件配置中添加JVM参数,解决了子进程无法载入dubbo配置的问题。Windows下设置MAVEN_OPTS环境变量,Linux下修改配置文件。在maven-surefire-plugin中配置`forkMode`和`argLine`以指定JVM参数,注意MAVEN_OPTS对子进程无效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

这段时间在写自动化测试的代码,想借助maven的surefire插件来做,写mvn test运行单元测试代码,出现dubbo配置文件找不到,个人单独运行Junit测试没问题,dubbo的配置放在JRE的vm配置中,走debug下来发现System.getProperties()压根没有dubbo的配置,觉得自己可能使用错方法了,然后尝试在maven中使用MAVEN_OPTS配置jvm参数,发现依然是这个错误。最后只能归结与surefire插件的问题。查询文档时发现surefire插件下可以配置参数,尝试配置在此处,正常测试。

1.Maven运行配置JVM参数
         Windows下添加环境变量MAVEN_OPTS的value为-Xms1024m -Xmx1024m -Xss1m
         Linux下可修改.profile或者.bash_profile文件,并做如下设置:
                       export MAVEN_OPTS=”-Xms1024m -Xmx1024m -Xss1m”
                       (注意:这里需要使用双引号或者单引号)

2. 为Maven fork出的新的子进程配置JVM参数(比如通过命令行mvn test运行测试用例时)
Maven运行测试用例时,是通过调用maven的surefire插件并fork一个子进程来执行用例的,所以这里可以在surefire插件的配置中直接添加jvm参数,如下:
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <forkMode>pertest</forkMode>
            <argLine>-Xms1024m -Xmx1024m -Xss1m </argLine>
        </configuration>
</plugin>
注意:通过MAVEN_OPTS方式设置的JVM参数对于fork出的子进程是无效的,所以对于通过mvn test来运行测试用例,需要单独配置。


<forkModel>参数
pretest: 每一个测试创建一个新进程,为每个测试创建新的JVM是单独测试的最彻底方式,但也是最慢的,不适合hudson上持续回归。
once:在一个进程中进行所有测试。once为默认设置,在Hudson上持续回归时建议使用默认设置。
always:在一个进程中并行的运行脚本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上提供这个功能,其中 threadCount:执行时,指定可分配的线程数量。只和参数parallel配合使用有效。默认:5。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值