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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven ::在多模块项目中仅运行单个测试相关的知识,希望对你有一定的参考价值。

有没有办法提供一些命令行参数,以跳过所有测试,但在某些模块上有一个?所以每次我需要运行另一个测试时我都不需要更改pom.xml吗?

例如,我想在TeamCity上创建构建配置,并提供命令行参数以在某个模块中仅运行单个测试。下次我需要更改它并运行另一个测试,依此类推。

也许不是如何使用CI,但仍然如此。

答案

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

mvn test -Dtest=testname -pl subproject

其中subproject是包含该测试的项目。从mvn手册页:

-pl, - projects arg以逗号分隔的指定反应堆项目列表,而不是所有项目。项目可以由[groupId]:artifactId或其相对路径指定。

另一答案

对于依赖于要构建的其他子模块的项目,我看到的其他答案并不完全。一种选择是运行mvn install以将所需的罐安装到~/.m2/...中,但该选项不是很“干净”。

以下命令将构建子模块,并仅运行指定的测试类。这将在父模块级别运行。此外,无需指定子模块名称。

mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am

顺便说一句,这也可以是mvn clean test -Dfa.....。在运行测试时总是运行clean是我个人的习惯。

参考.. -am将制作所有其他子模块。 -DfailIfNoTests=false并没有使整个过程失败,因为我们不打算在其他模块中运行测试。 由于-pl已经在构建一切,因此不需要-am选项

另一答案

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

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

参考:http://www.automatethebox.com/2015/12/some-helpful-commands-to-build-multi.html

以上是关于maven ::在多模块项目中仅运行单个测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 多模块项目中仅运行父 pom.xml

使用 Spring 在多模块 Maven 项目中进行集成测试

如何在Gradle中为单个测试类并行执行JUnit测试

在多模块 Maven 项目中运行 exec-maven-plugin 时出现问题

在多模块 maven 项目中的模块之间共享 src/test 类

如何在多模块项目中使用 JUnit5 和 SpringBoot2 通过 gradle 而不是 intelliJ 运行测试