在junit中执行测试套件的订单

Shr*_*ram 6 java junit

我有一个具有以下结构的测试套件

TestClass1
      - testmethod1()
      - testmethod2()
      - testmethod3()
      - testmethod4() 
TestClass2
          - testmethod11()
          - testmethod22()
          - testmethod33()
          - testmethod44()
Run Code Online (Sandbox Code Playgroud)

在上面的结构中,我想执行testmethod4()作为最后一个.即)最后执行.有一个注释@FixMethodOrder,它执行一个方法而不是testclass.是否有任何机制来维护测试类和testmethod中的顺序.使用@FixMethodOrder,我可以通过重命名测试方法的名称来执行该方法,但我不能指示junit执行测试类作为最后一个(最后一个).

Nam*_*man 8

虽然再次引用@Andy -

你不应该关心测试订购.如果它很重要,那么测试之间就会存在相互依赖性,因此您需要测试行为+相互依赖性,而不仅仅是行为.当按任何顺序执行时,您的测试应该完全相同.

但如果需要这样做,你可以试试 Suite

@RunWith(Suite.class)

@Suite.SuiteClasses({
        TestClass2.class,
        TestClass1.class
})
public class JunitSuiteTest {
}
Run Code Online (Sandbox Code Playgroud)

您可以在哪里指定

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestClass1 {

    @AfterClass
    public void testMethod4() {
Run Code Online (Sandbox Code Playgroud)

然后注意将你的方法命名testMethod4为最终执行,或者你也可以使用Junit5中@AfterClass很快就会被替换的@AfterAll方法.

请看看Alan Harder控制JUnit测试的顺序