在Maven2中运行单个测试用例并添加JVM参数(转)
2013-07-25 12:20
381 查看
转自:http://ralf0131.blogbus.com/logs/75672327.html
参考:
http://blog.tfd.co.uk/2007/09/05/surefire-unit-test-arguments-in-maven-2/
http://maven.apache.org/plugins/maven-surefire-plugin/howto.html
http://mavenize.blogspot.com/2007/07/setting-command-line-arguments-for.html
都说Maven2是Ant的替代品,今天稍微使用了下Maven,记录备忘。
通过Maven单独运行一个Junit测试用例(无需配置surefire):
mvn -Dtest=TestXXX test
为Maven运行添加JVM参数,比如想给运行Maven的JVM分配更多内存,或者进行profiling等。有两种方法,一种是全局方法,即设置一个全局的环境变量MAVEN_OPTS。
linux下可修改.profile或者.bash_profile文件:export MAVEN_OPTS="$MAVEN_OPTS -Xmx1024m"
windows下可以添加环境变量MAVEN_OPTS
这样对于所有的maven进程都会启用这个JVM参数,所以是一个全局变量,具体可在bin\mvn.bat或者mvn.sh文件中找到如下内容:(%MAVEN_OPTS%即为全局JVM参数)
@REM Start MAVEN2
:runm2
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" org.codehaus.classworlds.Launcher %MAVEN_CMD_LINE_ARGS%
如果有更加specific的需求,比如要单独运行一个JUnit Testcase,并且要fork出一个新的JVM来运行,还要为这个JVM加上特定的参数,那就需要更改项目的pom.xml文件了。具体方法是,修改 项目的pom.xml在<build>-><plugins>,添加一个plugin,目的是配置surefire,使得 每运行一个testcase,都单独fork出一个新的JVM来运行,若还要添加JVM参数,则可通过maven.test.jvmargs来进行传递:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>${maven.test.jvmargs}</argLine>
</configuration>
</plugin>
然后在<properties>标签下加入,这样maven能够知道maven.test.jvmargs这个参数存在,默认值为空,通过运行时命令行传入:
<deploy.target/>
<maven.test.jvmargs></maven.test.jvmargs>
最后通过如下命令来运行,其中-Dtest是需要运行的testcase的名称,-Dmaven.test.jvmargs指需要传入的JVM参数,maven将这个参数传给新的fork出来的JVM运行。
mvn -Dtest=TestXXX -Dmaven.test.jvmargs='-agentlib:xxxagent -Xmx128m' test
参考:
http://blog.tfd.co.uk/2007/09/05/surefire-unit-test-arguments-in-maven-2/
http://maven.apache.org/plugins/maven-surefire-plugin/howto.html
http://mavenize.blogspot.com/2007/07/setting-command-line-arguments-for.html
都说Maven2是Ant的替代品,今天稍微使用了下Maven,记录备忘。
通过Maven单独运行一个Junit测试用例(无需配置surefire):
mvn -Dtest=TestXXX test
为Maven运行添加JVM参数,比如想给运行Maven的JVM分配更多内存,或者进行profiling等。有两种方法,一种是全局方法,即设置一个全局的环境变量MAVEN_OPTS。
linux下可修改.profile或者.bash_profile文件:export MAVEN_OPTS="$MAVEN_OPTS -Xmx1024m"
windows下可以添加环境变量MAVEN_OPTS
这样对于所有的maven进程都会启用这个JVM参数,所以是一个全局变量,具体可在bin\mvn.bat或者mvn.sh文件中找到如下内容:(%MAVEN_OPTS%即为全局JVM参数)
@REM Start MAVEN2
:runm2
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" org.codehaus.classworlds.Launcher %MAVEN_CMD_LINE_ARGS%
如果有更加specific的需求,比如要单独运行一个JUnit Testcase,并且要fork出一个新的JVM来运行,还要为这个JVM加上特定的参数,那就需要更改项目的pom.xml文件了。具体方法是,修改 项目的pom.xml在<build>-><plugins>,添加一个plugin,目的是配置surefire,使得 每运行一个testcase,都单独fork出一个新的JVM来运行,若还要添加JVM参数,则可通过maven.test.jvmargs来进行传递:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>${maven.test.jvmargs}</argLine>
</configuration>
</plugin>
然后在<properties>标签下加入,这样maven能够知道maven.test.jvmargs这个参数存在,默认值为空,通过运行时命令行传入:
<deploy.target/>
<maven.test.jvmargs></maven.test.jvmargs>
最后通过如下命令来运行,其中-Dtest是需要运行的testcase的名称,-Dmaven.test.jvmargs指需要传入的JVM参数,maven将这个参数传给新的fork出来的JVM运行。
mvn -Dtest=TestXXX -Dmaven.test.jvmargs='-agentlib:xxxagent -Xmx128m' test
相关文章推荐
- 奇怪问题1:Maven+testng无法识别新添加的类内的测试用例
- mvn测试用例使用surefire插件,jvm参数未载入的原因
- Jvm运行参数与调优(整理/划重点)
- PhpStorm 快速运行测试用例的相关配置
- 如何录制回放测试用例并且添加检查点?
- 运行jar程序时添加vm参数
- Android test---CTS---添加一个新的测试用例
- maven运行junit用例并生成报告maven-surefire-plugin,maven-antrun-extended-plugin
- TekNote #1: 在Mac(Snow Leopard)下,用Maven运行测试(mvn test)时,DBUnit 读文件的编码问题(file.encoding)
- 模型驱动测试-多参数测试用例设计敏捷化的一些实践方法
- IntelliJ IDEA设置JVM运行参数
- 没有输入参数的接口函数如何设计测试用例?
- Centos6.8安装maven安装和常用参数-测试小白福利
- 【IntelliJ IDEA】Maven工程中的测试用例的实现与讲解
- jmeter+ant之批量运行接口用例(新建测试交流群651385084)
- Maven编译打包时如何忽略测试用例
- Elastos测试框架搭建--测试用例运行流程
- IntelliJ IDEA 设置 JVM 运行参数
- 优化JVM参数提升Eclipse运行速度
- Maven配置插件跳过测试代码的编译和运行