我有一个包含两个方法的类,它们属于两个不同的组:
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"
答案 0 :(得分:0)
例外很明显。
拥有组依赖关系的整个目的是根据其他@Test
方法的执行状态来控制属于某些组的@Test
方法的执行属于某些其他群体。
依赖必须具有依赖关系。
因此,在您的情况下,@Test
中必须存在至少1个group3
方法,其中属于group2
的所有方法都可以依赖该方法。如果group3
中不存在任何方法,那么group2
中的方法如何等待非现有方法完成它的执行。
更多:
<groups>
<define name="group3">
<include name="group2"/>
</define>
...
定义包含其他组的组并不意味着属于group2
的方法也属于group3
。这意味着,group3
的执行还将包括group2
的方法。