如何在单个TestNG测试中运行多个组的组合

时间:2017-10-26 13:00:21

标签: selenium selenium-webdriver testng

我需要在单个测试中执行所有3个类,并满足以下要求:

  1. 仅执行Class1中的test1和test3。
  2. 仅执行Class2中的test2。
  3. 执行Class3中的所有测试。

    public class Class1
    {
    @Test(groups={"test1"})
    public void test1()
    {
    system.out.println("test1");
    }
    @Test(groups={"test2"})
    public void test2()
    {
    system.out.println("test2");
    }
    @Test(groups={"test3"})
    public void test3()
    {
    system.out.println("test3");
    }
    }
    
  4. 第2类

        public class Class2
        {
        @Test(groups={"test1"})
        public void test_1()
        {
        system.out.println("test1");
        }
        @Test(groups={"test2"})
        public void test_2()
        {
        system.out.println("test2");
        }
        @Test(groups={"test3"})
        public void test_3()
        {
        system.out.println("test3");
        }
        }
    

    第3类

        public class Class3
        {
        @Test(alwaysrun="true")
        public void test()
        {
        system.out.println("test");
        }
        }
    

    为此,我使用了以下testNg xml,但无论我是否包括该组,都会执行Class 1和Class 3中的所有测试。

        <test name="Testcase">
        <classes>
            <groups>
                <run>
                    <include name="test1" />
                    <exclude name="test2" />
                    <include name="test3" />
                        <class name="Class1" />
                </run>
            </groups>
            <groups>
                <run>
                    <exclude name="test1" />
                    <include name="test2" />
                    <exclude name="test3" />
                        <class name="Class2" />
                </run>
            </groups>
            <groups>
                <run>
                </run>
                <class name="Class3" />
            </groups>       
        </classes>
        </test>
    

    如果我希望执行上面提到的类文件,请建议TestNg xml文件的正确语法是什么。

1 个答案:

答案 0 :(得分:0)

您的XML文件包含以下问题:class不应属于groups且群组不属于classes

此外,您的代码存在编译问题。最简单的解决方案是注释测试或测试类(您可以将整个类注释为Test并提供组名),然后仅运行该特定组。

示例:

第1课

public class Class1
{
    @Test(groups={"smoke"})
    public void test1(){
        System.out.println("test1");
    }

    @Test(groups={"func"})
    public void test2(){
        System.out.println("test2");
    }

    @Test(groups={"smoke"})
    public void test3(){
        System.out.println("test3");
    }
}

第2课

public class Class2
{
    @Test(groups={"func"})
    public void test_1(){
        System.out.println("test1");
    }
    @Test(groups={"smoke"})
    public void test_2(){
        System.out.println("test2");
    }
    @Test(groups={"func"})
    public void test_3(){
        System.out.println("test3");
    }
}

第3类

@Test(groups = {"smoke"})
public class Class3
{
    @Test(alwaysRun=true)
    public void test(){
        System.out.println("test");
    }
}

<强>的testng.xml

<suite name="Regression" >

<test name="Test1">
    <groups>
        <run>
            <include name="smoke"/>
        </run>
    </groups>
    <classes>
        <class name="Class1"/>
        <class name="Class2"/>
        <class name="Class3"/>
    </classes>
</test>
</suite>