7

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

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

是否可以使用故障安全插件运行测试套件?如果是这样,我哪里出错了!!

代码如下:

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

谢谢 :)

4

2 回答 2

11

Failsafe 插件从 2.7 版开始支持runOrder(click)参数(相当新)。选项不多,您不能明确指定顺序,但您可以将其设置为“按字母顺序”并重命名测试类以反映运行顺序。

顺便说一句,测试相互依赖的事实是(测试)代码气味;这不好,因为它是开发一组无法维护的测试并在其复杂性飙升到人类无法理解的程度时最终放弃它的捷径。此外,它可能无法暴露错误,因为它是一个选择的执行路径的结果。

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

<includes>
     <include>**/IntegrationSuite.java</include>
</includes>
于 2011-10-17T12:23:23.160 回答
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>     
于 2012-12-05T06:36:26.353 回答