以指定顺序运行Maven项目的JUnit测试

时间:2017-04-16 22:49:47

标签: java maven junit maven-surefire-plugin

我正在开发一个项目,根据他们对任何Maven项目的语句覆盖率来优先考虑Junit测试(我从Git中选择随机项目)。到目前为止,我能够获得优先测试的列表。

我不知道如何让Maven项目按照我提出的顺序运行测试。

我做了一些搜索,发现Maven surefire插件支持使用runOrder标记的订单。但顺序是固定的 - 按字母/反向等。我还遇到了TestNG,它支持在XML文件上指定的顺序。

我无法修改目标项目中的源代码(因为源代码不是由我编写的)。我只能在需要时添加新的配置文件或编辑POM.xml。

我怎样才能做到这一点?如果你能指导任何有用的资源,我真的很感激。

TIA

1 个答案:

答案 0 :(得分:1)

您可以为此创建和使用JUnitTestSuite。

@RunWith(Suite.class)
@SuiteClasses({Test1.class,
               Test2.class
})
public class YourTestSuite {
}

测试套件按照@SuiteClasses注释中提及的顺序运行测试用例。

如果您想通过maven目标(如maven测试目标)按顺序运行测试用例,则可以使用此测试套件。只需排除测试用例并通过下面给出的插件配置包含测试用例。



<plugin>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <excludes>
         <exclude>**/*Test.java</exclude>
      </excludes>
      <includes>
         <include>**/*TestSuite.java</include>
      </includes>
      <additionalClasspathElements>
         <additionalClasspathElement>${project.build.sourceDirectory}</additionalClasspathElement>
         <additionalClasspathElement>${project.build.testSourceDirectory}</additionalClasspathElement>
      </additionalClasspathElements>
      <useManifestOnlyJar>false</useManifestOnlyJar>
      <forkMode>always</forkMode>
   </configuration>
</plugin>
&#13;
&#13;
&#13;