无法 运行 Junit4 测试中的类别

Not able to run a category in Junit4 tests

有一个用类别注释的测试方法:

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

不知道为什么测试不是 run/skipped... 使用在 pom 配置文件中创建没有帮助 - 它只是 运行 所有测试。 添加此 运行ner 依赖项也无济于事:

<dependencies>
    <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-junit47</artifactId>
        <version>3.0.0-M3</version>
    </dependency>
</dependencies>

正在创建一个套件 运行s 所需的测试,但我不想在这个套件 class 中列出所有必需的 classes,只想 运行来自命令行的某个组

来自documentation

You can use JUnit categories by using the groups parameter.

使用 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 配置中添加 include 部分解决了问题。

<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>