如何使用 JVM 参数在终端中通过 maven 运行 junit 测试

Posted

技术标签:

【中文标题】如何使用 JVM 参数在终端中通过 maven 运行 junit 测试【英文标题】:How to run junit tests by maven in terminal with JVM arguments 【发布时间】:2017-05-25 05:23:39 【问题描述】:

正如here 中提到的,我们可以使用以下方法运行测试方法,

mvn -Dtest=TestCircle#xyz test

但我需要在运行测试用例之前设置一些 JVM 参数。就像我需要使用

-Djava.security.manager -Djava.security.policy=mypolicy.policy

我如何告诉 maven 在运行测试用例时考虑这些。

【问题讨论】:

Is there a way to pass jvm args via command line to maven?的可能重复 @Eomm 那么我们如何在运行测试用例时使用它来传递 VM 参数 按照建议,您可以使用一个名为 MAVEN_OPTS maven.apache.org/configure.html 的环境变量 maven.apache.org/surefire/maven-surefire-plugin/examples/…. surefire 插件创建自己的进程。您可以使用 -DargLine="" 将其他参数传递给该新进程:maven.apache.org/surefire/maven-surefire-plugin/… 【参考方案1】:

两种可能的解决方案:

首先,如果你的 JVM 参数适用于所有测试,你可以添加如下信息作为 Surefire 的配置项:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    ...
    <configuration>
        <argLine>-Djava.security.manager -Djava.security.policy=mypolicy.policy</argLine>
    </configuration>
</plugin>

其次,如果要在逐个测试的基础上应用此类 JVM 参数,则可以在命令行中指定它们,如下所示:

mvn -Dtest=TestCircle#xyz test -DargLine="-Djava.security.manager -Djava.security.policy=mypolicy.policy"

【讨论】:

以上是关于如何使用 JVM 参数在终端中通过 maven 运行 junit 测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

如何在eclipse中通过Juit进行单元测试

系统运维系列 之linux中通过sed命令直接修改文件内容

Maven 全新安装在 intellij 中工作,但不在终端中

使用maven时,如何修改JVM的配置参数;maven命令执行时到底消耗多少内存?

自动化运维:如何零停机构建与部署项目