问题描述
具有注释为类别的测试方法:
public interface BVT {} //is placed in package net.test.categories,file name BVT.java
public class TestClass{
@Test
@Category(BVT.class)
public void sometest(){
System.out.println("smoke");
} }
我使用Junit 4.12和surefire 3.0.0-M3
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<forkCount>${threadCount}</forkCount>
<reuseForks>false</reuseForks>
<skip>false</skip>
<groups>${testGroup}</groups>
</configuration>
</plugin>
如果我尝试从BVT类别进行测试
mvn clean test -DtestGroup="net.test.categories.BVT"
我明白了
[INFO] Results:
[INFO]
[INFO] Tests run: 0,Failures: 0,Errors: 0,Skipped: 0
不知道为什么测试没有运行/跳过... 使用in pom配置文件中的created并没有帮助-它仅运行所有测试。 添加此运行器依赖项也无济于事:
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>3.0.0-M3</version>
</dependency>
</dependencies>
创建套件会运行所需的测试,但我不想在此套件类中列出所有必需的类,只是想从命令行运行特定的组
解决方法
您可以使用
groups
参数来使用JUnit类别。
使用mvn -D...
设置系统属性,而不是插件参数。
所以您需要类似的东西:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
...
<groups>${myGroup}</groups>
</configuration>
</plugin>
并使用mvn ... -DmyGroup="net.test.categories.BVT"
找不到原因,但是在surefire配置中添加包含部分解决了该问题。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<forkCount>${threadCount}</forkCount>
<reuseForks>false</reuseForks>
<skip>false</skip>
<groups>${testGroup}</groups>
<includes>
<include>*</include>
</includes>
</configuration>
</plugin>