maven::在多模块项目中仅运行单个测试

xlpyo6sf  于 2023-03-17  发布在  Maven
关注(0)|答案(4)|浏览(333)

有没有什么方法可以提供一些命令行参数来跳过所有测试,只保留某个模块上的一个测试,这样我就不需要在每次需要运行另一个测试时都修改pom.xml了?
例如,我想在TeamCity上创建构建配置,并提供命令行参数来只运行某个模块中的单个测试,下一次我将需要更改它并运行另一个测试,等等。
也许这不是CI的使用方式,但仍然是。

r1wp621o

r1wp621o1#

我想你已经读过关于running a single test under surefire的文档了吧?他们没有告诉你如何在子模块中做到这一点:

mvn test -Dtest=testname -pl subproject

其中subproject是包含该测试的项目。在mvn手册页中:
-pl,--projects arg要生成的指定React器项目(而不是所有项目)的逗号分隔列表。项目可以通过[groupId]:artifactId或其相对路径指定。

smdnsysy

smdnsysy2#

对于依赖于其他子模块构建的项目,我看到的其他答案并不完全完整,一个选项是运行mvn install,将所需的jar安装到~/.m2/...中,但该选项不是很“干净”。
以下命令将生成子模块,并仅运行指定的测试类。这将在父模块级别运行。另外,无需指定子模块名称。

mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am
  • 顺便说一句,这也可以是mvn clean test -Dfa.....。我有一个习惯,在运行测试时总是运行clean。*

参考资料..
-am将生成所有其他子模块。
-DfailIfNoTests=false不会使整个过程失败,因为我们不打算在其他模块中运行测试。
不需要-pl选项,因为-am已经构建了所有内容

laik7k3q

laik7k3q3#

如果要测试的模块依赖于其他项目,则解决方案通过将命令更改为:

mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject
cfh9epnr

cfh9epnr4#

FWIW,如果你有一个多模块项目,你可以在父目录下用这个命令运行所有的测试。

mvn test -pl subproject

并且可以通过运行以下命令找到subproject的名称,通常格式为group-id:artifact-id

mvn help:active-profiles

相关问题