无法在Junit4测试中运行类别

问题描述

具有注释为类别的测试方法

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>

创建套件会运行所需的测试,但我不想在此套件类中列出所有必需的类,只是想从命令行运行特定的组

解决方法

来自documentation

您可以使用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>