Maven Surefire Junit测试套件

时间:2016-01-26 08:03:40

标签: java maven junit surefire

我正在使用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>

2 个答案:

答案 0 :(得分:0)

我在一些项目中所做的是在<profiles>中使用pom.xml来激活特殊的测试套件。如果没有激活的配置文件,所有测试都将使用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

答案 1 :(得分:0)

我认为您可以尝试使用-DrunSuite = ** / * Suite.class