@AfterClass未执行

时间:2018-07-30 18:14:00

标签: testng testng-eclipse

在我的测试中,自动化通过testNG的功能在两个移动设备上并行运行测试。 @BeforeClass和@AfterClass方法位于所有其他测试类继承的基(超级)类中。 BeforeClass方法初始化驱动程序会话,而AfterClass终止会话。

问题是未执行@AfterClass。因此,驱动程序会话不会终止,并且随后对BeforeClass的调用因此而失败。这导致仅执行每个类中的第一个测试,而其余测试未执行。

我想知道是否有人遇到过这个问题……原因/补救措施是什么!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Mobile Tests" parallel="tests" thread-count="2"
    preserve-order="true" configfailurepolicy="continue">
    <parameter name="browserTypes" value="Mobile OS" />

    <listeners>
        <listener class-name="my.listeners.TestListener" />
        <listener class-name="my.listeners.CustomReportListener" />
    </listeners>

    <test verbose="2" name="IPHONE_6SPLUS : Parallel Tests">
        <parameter name="device" value="IPHONE_6SPLUS" />
        <parameter name="deviceOS" value="iOS" />
        <classes>
            <!-- ALL INSTALL TESTS -->
            <class name="my.tests.Install" />
            <class name="my.tests.Class1_tests" />
            <class name="my.tests.Class2_tests" />
            <class name="my.tests.Class3_tests" />
            <class name="my.tests.Class4_tests" />
            <class name="my.tests.Class5_tests" />
        </classes>
    </test>

    <test verbose="2" name="IPHONE_SE : Parallel Tests">
        <parameter name="device" value="IPHONE_SE" />
        <parameter name="deviceOS" value="iOS" />
        <classes>
            <!-- ALL INSTALL TESTS -->
            <class name="my.tests.Install" />
            <class name="my.tests.Class1_tests" />
            <class name="my.tests.Class2_tests" />
            <class name="my.tests.Class3_tests" />
            <class name="my.tests.Class4_tests" />
            <class name="my.tests.Class5_tests" />
        </classes>
    </test>

</suite> <!-- Suite -->

1 个答案:

答案 0 :(得分:0)

您的基班公开吗?以下示例对我有用。

public abstract class A {

 @AfterClass
 tearDown() {...}

}

class B extends A {  

 @Test
 doTests() {...}

}

您也可以尝试@AfterClass (alwaysRun = true)