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

Run JUnit tests of a Maven Project in a specified order

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

我不确定如何使 Maven 项目运行按照我提出的顺序进行测试。

我做了一些搜索,发现 Maven surefire 插件支持使用 运行Order 标签的订单。但顺序是固定的——按字母顺序/倒序等。我还遇到了 TestNG,它支持在 XML 文件中指定的顺序。

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

我怎样才能做到这一点?如果您能指导我实现此目标的任何有用资源,我将不胜感激。

TIA

您可以为此创建和使用 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>