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

时间:2018-06-05 06:45:15

标签: testng

我已经使用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的更改有关?

现在正确的行为是什么?

1 个答案:

答案 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系列。