无法在 TestNG 中确定多类的优先级

Unable to prioritize multiclasses in TestNG

我正在尝试使用 TestNG.I 执行一些测试用例,想优先执行 testng.xml 中的多个 classes。 我想根据给定的优先级首先执行整个 class,然后再移动到另一个 class。 我使用了 "group-by-instances="true"。但它没有用。`

以下是我要执行的 classes。

package pkg1;

import org.testng.annotations.Test;


public class Class1 {

    @Test(priority=1)
    void pkg111() {
        System.out.println("pkg1 class1 p1");
    }

    @Test(priority=2)
    void pkg121() {
        System.out.println("pkg1 class1 p4");
    }

    @Test(priority=3)
    void pkg131() {
        System.out.println("pkg1 class1 p3");
    }
}

另一个Class

    package pkg1;

    import org.testng.annotations.Test;

    public class Class2 {

        @Test(priority=2)
        void Pkg1c2()
        {
            System.out.println("c2p2");

        }

    }

另一个

package pkg2;

import org.testng.annotations.Test;

public class Class4 {
    @Test(priority = 1)
    void pkg211() {
        System.out.println("pkg2 class4 p1");
    }

    @Test(priority = 2)
    void pkg221() {
        System.out.println("pkg2 class4 p2");
    }

    @Test(priority = 3)
    void pkg231() {
        System.out.println("pkg2 class4 p3");
    }
}

以下是testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test name="Test" verbose="10" group-by-instances="true">
    <classes>
      <class name="pkg1.Class1"/>
       <class name="pkg1.Class2"/>
       <class name="pkg2.Class4"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

结果如下。

pkg1 class1 p1
pkg2 class4 p1
pkg1 class1 p4
c2p2
pkg2 class4 p2
pkg1 class1 p3
pkg2 class4 p3
===== Invoked methods
    Class1.pkg111()[pri:1, instance:pkg1.Class1@4cc0edeb] 1287712235
    Class4.pkg211()[pri:1, instance:pkg2.Class4@724af044] 1917513796
    Class1.pkg121()[pri:2, instance:pkg1.Class1@4cc0edeb] 1287712235
    Class2.Pkg1c2()[pri:2, instance:pkg1.Class2@39aeed2f] 967765295
    Class4.pkg221()[pri:2, instance:pkg2.Class4@724af044] 1917513796
    Class1.pkg131()[pri:3, instance:pkg1.Class1@4cc0edeb] 1287712235
    Class4.pkg231()[pri:3, instance:pkg2.Class4@724af044] 1917513796
=====

您可以尝试使用 preserve-order 属性,如下所示:

<test name="Test" preserve-order="true">

进行此更改并检查是否有帮助。

@Test(priority = X) 具有全局范围,优先顺序将属于套件的所有方法。

只需将 @Test(priority = X) 替换为 @Test(dependsOnMethods = "X")