一尘不染

如何使用Maven在特定软件包中运行所有测试?

java

我可以在Maven文档中找到如何运行的地方:

  1. 一次测试
  2. 所有测试都在一个测试类中
  3. 符合特定模式的类中的所有测试

但是,如何在一个包中运行所有测试?这可能吗?

我希望不需要修改pom.xml或代码的解决方案。


阅读 150

收藏
2020-12-03

共1个答案

一尘不染

例如,您也可以使用模式

 mvn '-Dtest=de.mypackage.*Test' test

运行以 de.mypackage 包结尾的类中的所有测试*Test

[更新2017/12/18]:
由于这已成为公认的答案,因此这里有一些进一步的信息:

  • Maven使用Maven Surefire插件执行测试。
  • 上面使用的语法(合格的软件包名称)需要Surefire版本2.19.1或更高版本!早期版本要求使用路径表达式,例如

    mvn -Dtest="de/mypackage/*Test" test
    
  • 我使用引号(`或“)来防止外壳执行路径名扩展,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

还有其他可能性,例如使用正则表达式,请参阅运行单个测试官方文档

2020-12-03