public class c1 {
@Test(groups ={"first","third"})
public void p1_c1_1()
{
System.out.println("p1_c1_1");
}
@Test(groups ="second")
public void p1_c1_2(){
System.out.println("p1_c1_2");
}
@Test(groups ="third")
public void p1_c1_3(){
System.out.println("p1_c1_3");
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite One" allow-return-values="true" verbose="1">
<test name="Test One">
<groups>
<define name="all">
<include name="first" />
<exclude name="second"/>
<exclude name="third"/>
</define>
<run>
<include name="all" />
</run>
</groups>
<classes>
<class name="c1" />
</classes>
</test>
</suite>
如果我运行这个testNg文件,我会打印p1_c1_1,我必须这样做,因为它在两个组之下&#34;第一个&#34;和&#34;第二&#34;。所以虽然p1_c1_1在包含的组#&#34; first&#34;下,但它仍处于被排除的组中,名为&#34; third&#34;,所以从技术上讲,该方法不应该被执行。我想知道如何排除一个包含其中一个组的
之下的两个组的方法答案 0 :(得分:0)
dtd指定<define>
仅支持包含为选项
<!ELEMENT groups (define*,run?,dependencies?) >
<!ELEMENT define (include*)>
<!ATTLIST define
name CDATA #REQUIRED>
因此,实现这一目标的唯一方法是运行简单组而不是定义一组groups.i.e。
<groups>
<run>
<include name="first" />
<exclude name="second"/>
<exclude name="third"/>
</run>
</groups>
这将按您想要的方式工作。由于在此示例中至少没有复杂的分组,因此在这种情况下甚至不需要元组。
答案 1 :(得分:0)
如果您想尝试更复杂的群组过滤,也许您可以尝试在TestNG套件XML文件中利用Beanshell功能,其中您可以轻松定义您想要的任何内容。
有关如何在TestNG套件xml文件中利用Beanshell的更多信息,您可以查看我的this博客文章。