当前位置: 首页 > 知识库问答 >
问题:

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

何灿
2023-03-14

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

>

  • 仅从Class1执行test1和test3。
  • 仅从Class2执行test2。
  • 执行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");
    }
    }
    

    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个答案

    岳正阳
    2023-03-14

    XML文件包含以下问题:类不应属于组,组不应属于类。

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

    示例:

    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");
        }
    }
    

    测试NG。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>
    

     类似资料: