`

在Maven2中运行单个测试用例并添加JVM参数【转】

阅读更多

本文转自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=-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

分享到:
评论

相关推荐

    dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java

    JUnit是Java中最常用的单元测试框架,它提供了编写和运行测试用例的便利工具。如果你的项目已经包含JUnit测试,你可以通过以下步骤在命令行中执行这些测试: 1. **构建测试类**:确保你的测试类继承了JUnit的`@Run...

    maven3-junit-spock-testng-mixin-master.rar

    项目中的源码可能包含了如何配置 Maven 以支持这三种测试框架,如何编写兼容的测试类,以及如何在单个测试执行中运行这些不同框架的测试用例。学习这个项目可以帮助开发者了解如何在实际项目中灵活选择和组合不同的...

    Serenity-BDD-Framework-Skelton

    使用sure-fire插件在Paralle中运行测试用例。2.包含Java日志以打印elimintae systerm.out实践的输出消息和服务。3.能够查看Serenity Report和Cucumber JVM Report 4。该框架中包含许多帮助程序,以快速跟踪脚本并...

    java开发测试

    2.Junit:单元测试框架,用于编写和运行针对单个方法的测试用例。 3.Maven或Gradle:项目管理工具,自动化构建、依赖管理和项目报告。 三、测试方法 1. 单元测试:通过Junit或其他测试框架对代码的最小可测试单元...

    osgi解决不同版本jar包冲突的demo

    OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个JVM上运行多个版本的相同库或服务,从而解决了不同版本jar包冲突的问题。本示例通过一个名为“myself”的工程,展示了如何...

    java源代码

    开发者可以使用Java编译器(javac)将此文件编译成`.class`字节码文件,然后在Java虚拟机(JVM)上运行。 2. **Java类或包**:如果`pan`是一个包含多个`.java`文件的目录,这可能代表一个Java类或包结构。在这种...

    cucumber

    3. **运行Cucumber测试**:Cucumber-JVM是Cucumber的Java实现,可以通过Maven或Gradle等构建工具集成到Java项目中。运行Cucumber测试时,会根据Gherkin文件和步骤定义执行测试,并生成详细的测试报告。 4. **数据...

    Test:我的 Java 测试存储库

    在 "我的 Java 测试存储库" 中,我们可以推测这个项目可能包含了许多这样的测试用例。 Hibernate 是一个强大的 ORM 框架,它允许开发者使用 Java 对象来操作数据库,而无需编写大量的 SQL 代码。通过 Hibernate,...

    atlanta-cucumber:SeleniumCucumber项目的资源库

    它们提供了一套规则来定义测试套件和单个测试,并能报告测试结果。 6. **依赖管理**:项目可能使用Maven或Gradle这样的构建工具来管理依赖关系,确保所有必需的库都能正确地被引入和更新。 7. **报告**:Cucumber...

    test_tl_repo

    Java的设计理念是“一次编写,到处运行”,这意味着Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,无需重新编译。Java的特点包括简单性、面向对象、健壮性、安全性、可移植性等,这些都使得它成为开发各种...

    binzieAckoTest

    在IT行业中,尤其是在软件开发领域,Java是一种广泛使用的编程语言,以其“一次编写,到处运行”的特性而闻名。"binzieAckoTest"这个标题可能是某个项目或测试框架的名称,它可能涉及到Java编程和测试实践。由于提供...

    Epam_java_test

    2. **Mockito**:这是一个模拟框架,允许开发者在测试中替换真实对象,以便更好地控制测试环境。Mockito可以帮助我们隔离被测试代码,防止外部因素影响测试结果。 3. **Selenium**:如果涉及到Web应用测试,...

    TestProjetctMar21

    在Java中,单元测试通常使用JUnit框架进行,这是一个流行的开源工具,允许开发者编写测试代码来验证单个函数或方法的行为。例如,测试类会包含一系列的测试方法,每个方法对应一个被测试的代码逻辑,通过断言...

    jemma.osgi.ah.demo.fakevalues:JEMMA的假冒设备

    2. **OSGi**: OSGi是一种Java服务平台,允许在单个JVM上动态地安装、启动、更新和卸载软件模块。OSGi的核心是其模块系统,它使得组件化开发和管理变得更加灵活,尤其是在复杂的嵌入式系统和企业级应用中。 3. **...

    test-task

    在IT行业中,Java是一种广泛应用的高级编程语言,以其“一次编写,到处运行”的特性而闻名。这个名为"test-task"的项目很可能是一个基于Java的测试用例或小型应用程序。下面,我们将深入探讨Java语言的核心特性、...

    java代码-27.刘俊栋

    13. **单元测试**:JUnit是Java中的一个流行单元测试框架,用于编写和运行测试用例,确保代码的质量和功能正确性。 以上只是Java编程中的一部分知识点,实际的“java代码-27.刘俊栋”项目可能涵盖了这些或更多内容...

    Proyecto_Guacamole:Proyecto de Sistemas Distribuidos usando TCP,多播和RMI en Java

    2. **构建脚本(build scripts)**:如Maven或Gradle配置文件,用于自动化构建、测试和打包过程。 3. **配置文件(config)**:可能包含TCP和多播的相关配置,如端口设置、多播组地址等。 4. **测试目录(test)**:...

    vertx-lang-jruby:Vertx jruby API 填充模板

    2. **构建项目**:在项目根目录下运行`mvn package`命令,这将编译源代码并生成一个包含JRuby Verticle的JAR文件。 3. **运行测试**:接着,运行`rake test`,这将执行任何定义的测试用例,验证HTTP服务器的正确性。...

    scala_study

    此外,Scala的模式匹配功能允许在单个表达式中处理多种情况,提高了代码的可读性和效率。 在Scala中,actor模型被用于并发编程,它是基于消息传递的并发机制,可以有效地处理异步操作和资源共享问题。Akka框架是...

    winter2021turkish

    8. **单元测试和集成测试**: 为了确保代码质量,开发者通常会编写测试用例,包括单元测试(针对单个功能或方法)和集成测试(验证不同组件之间的交互)。 9. **持续集成/持续部署(CI/CD)**: 使用如Jenkins或Travis ...

Global site tag (gtag.js) - Google Analytics