如何设置testng.xml文件中组中包含的方法的优先级?

时间:2016-02-03 13:50:17

标签: testing testng

我有一个有两种方法的类。每种方法都有一个相关的组。

现在我想以这样的方式设置我的testng.xml文件:当测试用例TC1执行时,将调用Method1()然后调用Method2(),当执行测试用例TC2时,Method2()然后执行Method1()将被执行。

我有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以将测试用例方法移动到辅助类,然后只需为每个测试用例创建一个测试类,使用测试优先级和/或依赖项定义方法,并调用共享的测试方法代码。 e.g:

public class TestCaseMethods {
    public static void method1() { /*...*/ }
    public static void method2() { /*...*/ }
}

public class TC1 {
    @Test
    public void method1() {
        TestCaseMethods.method1();
    }

    @Test(dependsOnMethods = {"method1"})
    public void method2() {
        TestCaseMethods.method2();
    }
}

public class TC2 {
    @Test(dependsOnMethods = {"method2"})
    public void method1() {
        TestCaseMethods.method1();
    }

    @Test
    public void method2() {
        TestCaseMethods.method2();
    }
}

如果您愿意,也可以使用继承:

public class AbstractTC {
    public void method1() { /*...*/ }
    public void method2() { /*...*/ }
}

public class TC1 extends AbstractTC {
    @Override
    @Test
    public void method1() {
        super.method1();
    }

    @Override
    @Test(dependsOnMethods = {"method1"})
    public void method2() {
        super.method2();
    }
}

public class TC2 extends AbstractTC {
    @Test(dependsOnMethods = {"method2"})
    public void method1() {
        super.method1();
    }

    @Test
    public void method2() {
        super.method2();
    }
}