无法在 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")
。
我正在尝试使用 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")
。