【问题标题】:Running a JUnit4 Test Suite in Maven using maven-failsafe-plugin使用 maven-failsafe-plugin 在 Maven 中运行 JUnit4 测试套件
【发布时间】:2011-12-09 05:22:06
【问题描述】:

我有一个 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>

谢谢:)

【问题讨论】:

    标签: maven junit4 maven-failsafe-plugin


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回答!测试本身并不依赖于彼此运行,但是它们的运行顺序由详细说明测试的书面文件确定......不是我的决定,但我仍然必须实施它!
    • @HeavyMetalKid 现在我想起来了,根据 Surefire/Failsafe 查找测试用例的方式,可能不支持套件。不过,我无法给出确凿的证据。
    • 根据我在寻找答案时所读到的内容,我认为您可能是对的。我将尝试您的 runOrder + 字母命名想法。谢谢
    • 仅供参考:runOrder-failedfirst 仅支持故障安全版本 2.11
    【解决方案2】:

    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-02-11
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多