我可以在显示如何运行的Maven docs中找到:
但是如何在包中运行所有测试?这可能吗?
我更喜欢不需要修改pom.xml
或代码的解决方案。
答案 0 :(得分:128)
您也可以使用模式,例如
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
还有其他可能性,例如使用正则表达式,请参阅official documentation of running a single test。
答案 1 :(得分:20)
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
答案 2 :(得分:7)
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.*
...如果你想包括所有子包:
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.*
答案 3 :(得分:3)
O Badr答案的pom.xml版本:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<includes>
<!-- includes all tests, but not in subpackages -->
<include>**/package1/*</include>
<!-- includes all tests, AND in subpackages -->
<include>**/package2/**</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
答案 4 :(得分:3)
您可以从以下场景中获取信息:
(1)在maven build
期间跳过所有测试执行mvn package -DskipTests
(2)执行所有测试用例
mvn test
(3)执行特定测试组
mvn test -DincludeGroups=TestGroup1,TestGroup2
(4)在执行期间排除特定测试组
mvn test -DexcludeGroups=TestGroup3,TestGroup4
(5)执行特定的包测试用例
mvn test -Dtest="test.java.com.service.map.**"
(6)执行特定测试
mvn test -Dtest=Test1,Test2
我希望通过不同的执行组合对您更有帮助。
答案 5 :(得分:2)
遇到相同的问题(如何在特定程序包中运行所有测试)并尝试了许多方法,两个有效的命令是:
mvn -Dtest=com.package.my.package.** test
mvn -Dtest=com.package.my.package.**.* test
答案 6 :(得分:1)
这可能不是最好的答案,但你可以运行一个TestSuite(这是一个测试),它包含你想要在一个包中的所有测试。
答案 7 :(得分:0)
也可以通过
完成mvn clean test -Dtest="**/service/**/*.java"
例如:我在/ home / repository中,我只想在/ home / repository / service文件夹上运行测试
此处服务文件夹位于我当前的文件夹中。
答案 8 :(得分:0)
您可以通过Surefire-plugin
在pom.xml中提及包[["Test Value","08/30/2017 16:33:35","625"],["Test Value","08/30/2017 16:22:38","240"]]
[["Test Value 2","08/30/2017 16:07:38","432"],["Test Value 2","08/30/2017 15:59:07","1355"]]
请注意,JUnit版本应大于4.8。和版本的surefire应该是2.19.1 Find more details here