我有一个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>
谢谢:)
答案 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>