我有多个Junit测试套件(SlowTestSuite,FastTestSuite等)。我想使用maven命令只运行特定的套件。 e.g。
mvn clean install test -Dtest=FastTestSuite -DfailIfNoTests=false
但它不起作用。根本就没有运行任何测试。请提出任何建议。
答案 0 :(得分:40)
我通过将属性添加到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但你可以运行其他测试,例如SlowTestSuite使用maven命令:
mvn install -DrunSuite=**/SlowTestSuite.class -DfailIfNoTests=false
答案 1 :(得分:5)
您错过的关键字是maven-surefire-plugin:http://maven.apache.org/plugins/maven-surefire-plugin/。
用法是:
<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>
如果您对堆栈溢出进行一些搜索,您可能会找到以下信息:
Running a JUnit4 Test Suite in Maven using maven-failsafe-plugin Using JUnit Categories with Maven Failsafe plugin
此外,您可以定义配置文件,例如fastTest,它将通过向cmd行添加参数来触发:
mvn package -PfastTests
此配置文件也会包含一些内容。