如何使用 Maven 在特定包中运行所有测试?
我可以在Maven文档中找到它显示如何运行的地方:
- 单个测试
- 单个测试类中的所有测试
- 类中与特定模式匹配的所有测试
但是如何在包中运行所有测试?这可能吗?
我更喜欢不需要修改或代码的解决方案。pom.xml
我可以在Maven文档中找到它显示如何运行的地方:
但是如何在包中运行所有测试?这可能吗?
我更喜欢不需要修改或代码的解决方案。pom.xml
您也可以使用模式,例如
mvn '-Dtest=de.mypackage.*Test' test
在 以 结尾的包 de.mypackage 类中运行所有测试。*Test
[2017/12/18 更新]:
由于这成为公认的答案,因此以下是一些进一步的信息:
上面使用的语法(限定的包名称)需要 Surefire 版本或更高版本!早期版本需要使用路径表达式,例如2.19.1
mvn -Dtest="de/mypackage/*Test" test
我使用引号('或“)来防止shell执行路径名扩展,Maven不需要任何引号。
可以使用以下语法来解释单个测试方法
mvn -Dtest=MyUnitTest#testMethod test
来自子包的所有测试也可以包含,以便执行包中或包下的所有测试,执行:de.mypackage.sub
mvn -Dtest="de/mypackage/sub/**" test
或使用 Surefire 或更高版本2.19.1
mvn -Dtest="de.mypackage.sub.**" test
还有更多的可能性,例如使用正则表达式,请参阅运行单个测试的官方文档。
AFAIK 没有命令行参数,用于 surefire:test 在特定包中运行测试。
我使用配置变量来实现相同的效果。我的pom的片段.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<configuration>
<includes>
<include>**/${testGroup}/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
现在,如果我想在名为“com.example”的包中运行测试,我使用以下命令:
mvn test -DtestGroup=com/example