有没有什么方法可以提供一些命令行参数来跳过所有测试,只保留某个模块上的一个测试,这样我就不需要在每次需要运行另一个测试时都修改pom.xml了?例如,我想在TeamCity上创建构建配置,并提供命令行参数来只运行某个模块中的单个测试,下一次我将需要更改它并运行另一个测试,等等。也许这不是CI的使用方式,但仍然是。
r1wp621o1#
我想你已经读过关于running a single test under surefire的文档了吧?他们没有告诉你如何在子模块中做到这一点:
mvn test -Dtest=testname -pl subproject
其中subproject是包含该测试的项目。在mvn手册页中:-pl,--projects arg要生成的指定React器项目(而不是所有项目)的逗号分隔列表。项目可以通过[groupId]:artifactId或其相对路径指定。
subproject
smdnsysy2#
对于依赖于其他子模块构建的项目,我看到的其他答案并不完全完整,一个选项是运行mvn install,将所需的jar安装到~/.m2/...中,但该选项不是很“干净”。以下命令将生成子模块,并仅运行指定的测试类。这将在父模块级别运行。另外,无需指定子模块名称。
mvn install
~/.m2/...
mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am
mvn clean test -Dfa.....
clean
参考资料..-am将生成所有其他子模块。-DfailIfNoTests=false不会使整个过程失败,因为我们不打算在其他模块中运行测试。不需要-pl选项,因为-am已经构建了所有内容
-am
-DfailIfNoTests=false
-pl
laik7k3q3#
如果要测试的模块依赖于其他项目,则解决方案通过将命令更改为:
mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject
cfh9epnr4#
FWIW,如果你有一个多模块项目,你可以在父目录下用这个命令运行所有的测试。
mvn test -pl subproject
并且可以通过运行以下命令找到subproject的名称,通常格式为group-id:artifact-id。
group-id:artifact-id
mvn help:active-profiles
4条答案
按热度按时间r1wp621o1#
我想你已经读过关于running a single test under surefire的文档了吧?他们没有告诉你如何在子模块中做到这一点:
其中
subproject
是包含该测试的项目。在mvn手册页中:-pl,--projects arg要生成的指定React器项目(而不是所有项目)的逗号分隔列表。项目可以通过[groupId]:artifactId或其相对路径指定。
smdnsysy2#
对于依赖于其他子模块构建的项目,我看到的其他答案并不完全完整,一个选项是运行
mvn install
,将所需的jar安装到~/.m2/...
中,但该选项不是很“干净”。以下命令将生成子模块,并仅运行指定的测试类。这将在父模块级别运行。另外,无需指定子模块名称。
mvn clean test -Dfa.....
。我有一个习惯,在运行测试时总是运行clean
。*参考资料..
-am
将生成所有其他子模块。-DfailIfNoTests=false
不会使整个过程失败,因为我们不打算在其他模块中运行测试。不需要
-pl
选项,因为-am
已经构建了所有内容laik7k3q3#
如果要测试的模块依赖于其他项目,则解决方案通过将命令更改为:
cfh9epnr4#
FWIW,如果你有一个多模块项目,你可以在父目录下用这个命令运行所有的测试。
并且可以通过运行以下命令找到
subproject
的名称,通常格式为group-id:artifact-id
。