Maven Surefire Junit 测试套件

Maven Surefire Junit test suite

我使用 Maven Surefire 插件是为了 运行 只是一组特定的测试。 例如:

package suite;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

import suite.slow.EvenSlowerClassTest;
import suite.slow.SlowClassTest;

@RunWith(Suite.class)
@Suite.SuiteClasses({
    SlowClassTest.class,
    EvenSlowerClassTest.class
})
public class SlowSuite {

}

通过使用maven命令

test -DrunSuite=**/FastSuite.class -DfailIfNoTests=false

我可以 运行 明确地使用 FastSuite 或 SlowSuite 测试套件,但是,我如何 运行 我拥有的所有测试套件或测试套件中未涵盖的所有测试?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <includes>
            <include>${runSuite}</include>
        </includes>
    </configuration>
</plugin>

我在我们的一些项目中所做的,是在 pom.xml 中使用 <profiles> 来激活特殊的测试套件。如果没有配置文件处于活动状态,所有测试都将是 运行 和 mvn test(我希望这就是你要找的)

像这样:

<profile>
    <id>commit-test</id>
    <build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.3</version>
            <configuration>
                <groups>com.test.CommitTest</groups>
            </configuration>
        </plugin>
    </plugins>
</build>

测试 类 注释如下:

@Category(CommitTest.class)
public class SomeTestClass {
}

我不知道它是否适用于 @Suite@RunWith,但如果您的测试套件不是太多 类,那应该不难改变那个。

命令:mvn clean test -Pcommit-test

我想你可以试试 -DrunSuite=**/*Suite.class