TestNG与组组的依赖关系

时间:2014-05-13 10:23:45

标签: testng

我有一个包含两个方法的类,它们属于两个不同的组:

package foo.bar;
import org.testng.annotations.Test;

public class Five {
    private int counter = 0;
    @Test(groups = {"group1"})
    public void testOne() {
        System.out.println("Counter value in group1:" + counter);
    }

    @Test(groups = {"group2"})
    public void testTwo() {
        counter++;
        System.out.println("Counter value in group2 :" + counter);
    }
}

我创建了testng.xml文件来定义组之间的依赖关系并运行。

 <suite name="Sample 1">
    <test name="MySuite">
        <!-- filters testOne, but since it dependsOn non existent group it fails. -->
        <groups>
        <dependencies>
            <group name="group2" depends-on="group1"/>
        </dependencies>         
    </groups>
    <classes>
        <class name="foo.bar.Five"/>
    </classes>
</test>

有效。但是,当我定义一个新组并将其标记为依赖另一个组时,它会失败:

<suite name="Sample 1">
        <test name="MySuite">
            <groups>
                <define name="group3">
                    <include name="group2"/>
                </define>
                <dependencies>
                    <group name="group2" depends-on="group3"/>
                </dependencies>
            </groups>
            <classes>
                <class name="foo.bar.Five"/>
            </classes>
        </test>
    </suite>

在上面,我创建了一个新组,即group3,并标记了group2依赖于group3。但是当我跑步时,我得到了

DependencyMap::Method "Five.testTwo()[pri:0, instance:oracle.sysman.test.sample.Five@48ae10cd]" depends on nonexistent group "group3"

1 个答案:

答案 0 :(得分:0)

  

例外很明显。

拥有组依赖关系的整个目的是根据其他@Test方法的执行状态来控制属于某些组的@Test方法的执行属于某些其他群体。

依赖必须具有依赖关系

因此,在您的情况下,@Test中必须存在至少1个group3方法,其中属于group2的所有方法都可以依赖该方法。如果group3中不存在任何方法,那么group2中的方法如何等待非现有方法完成它的执行。

更多:

<groups>
            <define name="group3">
                <include name="group2"/>
            </define>
...

定义包含其他组的组并不意味着属于group2的方法也属于group3。这意味着,group3的执行还将包括group2的方法。