我有多个 Junit 测试套件(SlowTestSuite,FastTestSuite 等)。我想使用 Maven 命令只运行特定的套件。例如:
mvn clean install test -Dtest=FastTestSuite -DfailIfNoTests=false
但它没有起作用。根本没有运行任何测试。请问有什么建议。
我有多个 Junit 测试套件(SlowTestSuite,FastTestSuite 等)。我想使用 Maven 命令只运行特定的套件。例如:
mvn clean install test -Dtest=FastTestSuite -DfailIfNoTests=false
但它没有起作用。根本没有运行任何测试。请问有什么建议。
我通过在pom中添加属性来实现此操作:
<properties>
<runSuite>**/FastTestSuite.class</runSuite>
</properties>
而且maven-surefire-plugin应该是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>${runSuite}</include>
</includes>
</configuration>
</plugin>
默认情况下,它将运行FastTestSuite,但您可以使用Maven命令运行其他测试,例如SlowTestSuite:
mvn install -DrunSuite=**/SlowTestSuite.class -DfailIfNoTests=false
**/FastTestSuite.java
可以用来代替 **/FastTestSuite.class
。这两种变体都可以很好地执行,但是指定 .java
更符合官方文档的一致性(例如,http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html)。 - flaz14properties
元素应该放在你的 project
元素的根目录下(也就是直接放在 project
元素内,不要放在任何其他与 project
同级的元素内,比如 dependencies
和 build
等)。如果你已经在 project
根目录下有了一个 properties
元素,请不要再添加另一个——只需将内部行(<runSuite> ... </runSuite>
)添加到现有元素中即可。 - anon<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.1</version>
<configuration>
<includes>
<include>**/com.your.packaged.Sample.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
使用maven-failsafe-plugin在Maven中运行JUnit4测试套件 使用Maven Failsafe插件和JUnit类别
此外,您还可以定义配置文件,例如fastTest,通过在命令行添加参数来触发它:mvn package -PfastTests
<include>**/FastTestSuite.class</include>
即可。这只是使用Maven命令从命令行运行的要求。 - Java SEmvn clean test -Dtest=FastTestSuite
,因为它没有捕捉到该测试套件,所以没有测试可以运行。 - Java SE