TestNG 6.12中未执行的试验方法+

TestNG 6.12中未执行的试验方法+,testng,Testng,我得到了带有XML套件的测试类,如下所示: 类别1: 类别2: TestSuite.xml: 在旧版本中,所有方法都被执行。例如TestNG 6.10: ===== Invoked methods TestReal1.testMethodClass1A_prio0()[pri:0, instance:com.test.radek.testngtest.TestReal1@7adbe76f] 2061231983 TestReal2.testMethodClass2A_prio1(

我得到了带有XML套件的测试类,如下所示:

类别1:

类别2:

TestSuite.xml:

在旧版本中,所有方法都被执行。例如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、, 依赖于方法

但问题是,在我的例子中,使用6.12+版本的TestNG,一些测试用例没有执行,这样可以吗?若有,原因为何?它是否与TestNG实现中DynamicGraph的更改有关


现在正确的行为是什么?

问题的根本原因是,在套件xml文件中,测试类的包含顺序错误

TestReal1具有优先级较低的方法0、10和11,该类显示为套件文件中的第一个类。 TestReal2具有优先级更高的方法1、2和3,该类在套件文件中显示为第二个类。 这造成了混乱。AFAIK此问题已作为对DynamicGraph进行的某些修复的副作用得到修复,并且在TestNG 7.0.0中不再是问题—快照很快将作为TestNG 7.0.0发布

另外,请注意,我们目前在向Maven central发布TestNG 7.0.0-SNAPSHOT时遇到问题


因此,要解决这个问题,您可以尝试在套件xml中重新排序类,或者尝试使用TestNG 7.0.0系列。

Hi。谢谢你澄清这一点。所以我假设,在本例中,TestNG有一点问题。预期行为应符合优先级>保留顺序规则,例如:[priority0Method,priority1Method,…,priority11Method]。如果来自不同类的方法具有相同的优先级,则应根据保留顺序对其进行组织。我的理解正确吗?@guitar_freak-正确的行为将如您所引用的那样,即顺序上的层次结构功能从不重要到更重要:groupByInstance、preserveOrder、priority、DependSongGroup、dependsOnMethods。dependsOnMethods和dependsonGroup是硬依赖项,它们首先得到尊重,然后是优先级,然后是保留顺序,最后是groupByInstance
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
    }
}
<?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>
===== 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
=====
===== 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
=====