我需要按顺序运行测试。我在任何地方都找不到充分的记录。我宁愿从命令行执行此操作。就像是
mvn -Dtest=test1,test2,test3,test5 test
我该怎么做呢?
您不能指定测试的运行顺序。
解决方法是将runOrder 参数设置为按字母顺序排列。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<runOrder>alphabetical</runOrder>
</configuration>
</plugin>
然后你需要重命名你的测试以获得预期的顺序。
但是,进行依赖测试并不是一个好主意。单元测试必须是第一个。
您可以创建一个测试套件来运行所有测试并运行它。
使用junit 4:-
@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class,
Test2.class,
Test3.class,
Test4.class,
Test5.class
})
public class TestSuite
{
}
这将以正确的顺序运行它们。
如果您确实需要测试顺序,那么您应该使用testng而不是 JUnit,您可以在其中定义测试之间的依赖关系并基于特定的测试顺序。我知道在实践中,独立范式不起作用的时代。
如果您的单元测试需要按特定顺序运行,可能是因为您的测试设计不当,或者您的应用程序设计不当。您的单元测试应该彼此独立。
surefire-plugin的runOrder
参数会有所帮助,但只有按顺序执行类时才会有所帮助。在一个类中排序测试方法没有帮助(surefire-plugin 2.22.2,junit 5.6.1)。要使用 jUnit 实现测试类中的顺序,请使用 jUnit 通过@TestMethodOrder(MethodOrderer.Alphanumeric.class) (jUnit 5) 控制类中测试顺序的功能。