【发布时间】:2014-06-20 19:39:57
【问题描述】:
我正在使用 Maven 3.0.3、Failsafe 插件 v2.17 和 JUnit 4.11。目前我有一个集成测试,按以下顺序进行测试
@RunWith(SpringJUnit4ClassRunner.class)
public class MyTests {
@Test
public final void testAdd() {
…
}
@Test
public final void testUpdate() {
…
}
@Test
public final void testDelete() {
…
}
目前,当我通过 Maven 作为“mvn clean install”运行的一部分运行测试时,“testDelete”在“testAdd”或“testUpdate”之前运行。如果我将名称更改为“testZZZDelete”,那么它会在最后运行,但我不喜欢这样。
如何让测试按照我在文件中指定的顺序运行?我的故障安全配置是这样的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<configuration>
<reuseForks>true</reuseForks>
<argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
【问题讨论】:
-
最好是使用集成测试框架而不是单元测试框架。使用testng,您可以在其中控制集成测试的依赖关系等,这意味着您可以定义测试方法的执行顺序,无论它们如何通过
@test(dependsOnMethods={"m1", "m2§´"}等注释命名。 JUnit 不适用于集成测试。无需对字母顺序等做出假设。 -
我被带入这个项目很晚,此时,没有将数百个测试转换为 TestNG 的奢侈,尽管有空时肯定会向小组推荐它。在此期间,您有什么想法可以在给定约束的情况下解决问题?
标签: maven junit integration-testing maven-failsafe-plugin