使用maven-failsafe-plugin在Maven中运行JUnit4 Test Suite

时间:2011-10-17 11:10:09

标签: maven junit4 maven-failsafe-plugin

我有一个JUnit 4测试套件,它按照需要运行的顺序包含许多测试类(我们的集成测试需要按特定顺序运行)。

如果我在没有任何配置的情况下使用maven-failsafe-plugin,它将运行测试,但输入顺序不正确。但是,如果我将插件设置为运行测试套件,则不会运行任何测试。

是否可以使用failsafe插件运行测试套件?如果是的话,我哪里出错!!

代码如下:

@RunWith(Suite.class)
@SuiteClasses({ 
    TestCase1.class,
    TestCase2.class, 
       ...
    TestCaseN.class,
})
public class IntegrationSuite {
    //Do Nothing.
}

和pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <includes>
            <include>IntegrationSuite.java</include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <id>integration-test</id>
            <goals>
                <goal>integration-test</goal>
            </goals>
    </execution>
    <execution>
        <id>verify</id>
        <goals>
            <goal>verify</goal>
        </goals>
    </execution>
</executions>
</plugin>

谢谢:)

2 个答案:

答案 0 :(得分:10)

自2.7版本(最新版本)以来,Failsafe插件支持runOrder (click)参数。选项不多,您无法明确指定顺序,但可以将其设置为“按字母顺序排列”并重命名测试类以反映运行顺序。

我还可以说,测试依赖于彼此的事实是(测试)代码气味;它并不好,因为它是开发一套不可维护的测试并最终放弃它的一条短途径,当它的复杂性超越了人类的理解。此外,它可能无法暴露错误,因为它是一个选定的执行路径的结果。

顺便说一句,我更喜欢用这样的测试来包含双星号:

<includes>
     <include>**/IntegrationSuite.java</include>
</includes>

答案 1 :(得分:0)

maven-surefire-plugin也可以用作以下代码:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>**/IntegrationSuite.java</include>
</includes>
</configuration>
</plugin>