我已经使用XML套件获得了测试类,如下所示:
Class1:
public class TestReal1 {
@Test
public void testMethodClass1A_prio0() {
// some testing code
}
@Test(priority = 10)
public void testMethodClass1B_prio10() {
// some testing code
}
@Test(priority = 11)
public void testMethodClass1C_prio11() {
// some testing code
}
}
Class2:
public class TestReal2 {
@Test(priority = 1)
public void testMethodClass2A_prio1() {
// some testing code
}
@Test(priority = 2)
public void testMethodClass2B_prio2() {
// some testing code
}
@Test(priority = 3)
public void testMethodClass2C_prio3() {
// some testing code
}
}
TestSuite.xml:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="Test" preserve-order="true" verbose="10">
<classes>
<class name="com.test.radek.testngtest.TestReal1" />
<class name="com.test.radek.testngtest.TestReal2" />
</classes>
</test>
</suite>
进行此类配置后,对于TestNG 6.12+ ,只执行两种方法。 TestNG输出:
===== Invoked methods
TestReal1.testMethodClass1A_prio0()[pri:0, instance:com.test.radek.testngtest.TestReal1@54e156e1] 1424053985
TestReal2.testMethodClass2A_prio1()[pri:1, instance:com.test.radek.testngtest.TestReal2@5a311ade] 1513167582
=====
在旧版本中,所有方法都已执行。例如TestNG 6.10:
===== Invoked methods
TestReal1.testMethodClass1A_prio0()[pri:0, instance:com.test.radek.testngtest.TestReal1@7adbe76f] 2061231983
TestReal2.testMethodClass2A_prio1()[pri:1, instance:com.test.radek.testngtest.TestReal2@d029f4] 13642228
TestReal2.testMethodClass2B_prio2()[pri:2, instance:com.test.radek.testngtest.TestReal2@d029f4] 13642228
TestReal2.testMethodClass2C_prio3()[pri:3, instance:com.test.radek.testngtest.TestReal2@d029f4] 13642228
TestReal1.testMethodClass1B_prio10()[pri:10, instance:com.test.radek.testngtest.TestReal1@7adbe76f] 2061231983
TestReal1.testMethodClass1C_prio11()[pri:11, instance:com.test.radek.testngtest.TestReal1@7adbe76f] 2061231983
=====
我想这与6.10中引入的@Test属性重要性的实现有关:
订单功能的层次结构(从不太重要到更重要): groupByInstance,preserveOrder,priority,dependsOnGroups, dependsOnMethods
但问题是,在我的情况下,使用6.12+版本的TestNG一些测试用例是否未执行?如果是,为什么?它是否与TestNG实现中DynamicGraph的更改有关?
现在正确的行为是什么?
答案 0 :(得分:1)
问题的根本原因是在套件xml文件中,测试类的顺序错误。
TestReal1
具有较低优先级的方法(优先级0,10和11),此类显示为套件文件中的第一个。TestReal2
具有更高优先级的方法(优先级1,2和3),此类显示为套件文件中的第二个。这引起了混乱。 AFAIK此问题已修复为DynamicGraph
已完成的某些修补程序的副作用,并且在TestNG 7.0.0-SNAPSHOT
中不再存在问题(很快将作为TestNG 7.0.0
发布)< / p>
另请注意,我们目前在将TestNG 7.0.0-SNAPSHOT
发布到Maven central时遇到问题。
因此,要解决此问题,您可以尝试在套件xml中重新排序您的类(或)尝试使用TestNG 7.0.0系列。