运行 以指定顺序对 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>
我正在开发一个项目,根据 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>