testNG-关于@BeforeClass和@AfterClass中inheritGroups属性的理解

inheritGroups = true 默认是true,该方法用于限定在class类级别上,限制class类中的@BeforeClass和
@AfterClass注解的方法是否执行

@Test(groups = "级别1")
public class Testc {

    @Test(groups="级别1")
    public void testc_1(){
        System.out.println("testccc_1级别1执行了");
    }

    @Test(groups="级别2")
    public void testc_2(){
        System.out.println("testccc_2级别2执行了");
    }

    @BeforeClass(inheritGroups = false)
    public void testc_3(){
        System.out.println("testccc_3级别3执行了");
    }

    @AfterClass(inheritGroups = false)
    public void testc_4(){
        System.out.println("testccc_4级别3执行了");
    }
}

执行上文中的Testc类,结果如下:
testccc_3级别3执行了
testccc_1级别1执行了
testccc_2级别2执行了
testccc_4级别3执行了

===============================================
Default Suite
Total tests run: 2, Failures: 0, Skips: 0

由此可见,inheritGroups的设置,对于直接执行整个测试类来说没有影响。

利用xml文件,按照类级别的分组,执行测试类:
注意⚠️:此处是类级别,class类上必须有@Test(groups = “级别1”)的注解

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="套件">
    <test name="运行对应的BeforeClass方法">

        <groups>
            <run>
                <include name="级别1"/>
            </run>
        </groups>

        <classes>
            <class name="com.***.***.auto.test.common.local.demo.Testc"/>
        </classes>
    </test>
</suite>

执行XML后结果如下:
testccc_1级别1执行了
testccc_2级别2执行了

===============================================
套件
Total tests run: 2, Failures: 0, Skips: 0

若对Testc中的testc_3方法inheritGroups的设置删除,默认为true

    @BeforeClass()
    public void testc_3(){
        System.out.println("testccc_3级别3执行了");
    }

执行结果为:
testccc_3级别3执行了
testccc_1级别1执行了
testccc_2级别2执行了

===============================================
套件
Total tests run: 2, Failures: 0, Skips: 0

由此可见,inheritGroups的设置,在通过XML执行类级分组脚本时,决定@BeforeClass和@AfterClass注解的方法是否执行。注意:此处的分组必须为class类级,不能为方法级分组注解

上一篇:TestNG+HttpClient —— 第一个项目


下一篇:Matlab 读取 pcd 文件转ply并显示