2017-04-16 150 views
0

我正在开发一个项目,根据任何Maven项目(我从Git中选择随机项目)的语句覆盖范围来优先考虑Junit测试。到目前为止,我能够获得优先测试的列表。按指定顺序运行Maven项目的JUnit测试

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

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

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

我该如何做到这一点?如果您可以请直接向我提供有用的资源来实现这一点,我将非常感激。

TIA

+0

为什么你需要在一个特定的顺序运行测试? – khmarbaise

+0

当我们按照语句覆盖的顺序运行测试时,我希望看到性能(例如,识别错误的速率)。 – maddie

回答

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>

+0

谢谢。我会尝试@SuiteClasses选项。你能告诉我为什么我们需要选项吗? – maddie

+0

这只会订购课程。有没有办法订购测试用例(带有测试注释的方法) – maddie

+0

我想没有办法订购每个测试。但你的回答当然有助于我订购测试课程。谢谢。 – maddie

相关问题