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,我不能打印它,因为它在“第一”和“第二”两个组下。因此,尽管 p1_c1_1 在名为“first”的包含组下,但它仍然在名为“third”的排除组下,因此从技术上讲,该方法不应执行。我想知道如何排除包含其中一个组的两个组下的方法
最佳答案
dtd指定 <define>
只支持包含选项
<!ELEMENT groups (define*,run?,dependencies?) >
<!ELEMENT define (include*)>
<!ATTLIST define
name CDATA #REQUIRED>
因此,实现此目的的唯一方法是运行简单的组,而不是定义一组组。即
<groups>
<run>
<include name="first" />
<exclude name="second"/>
<exclude name="third"/>
</run>
</groups>
这会按照您想要的方式工作。由于此示例中至少没有复杂的分组,因此在这种情况下甚至不需要元组。
关于unit-testing - 排除多个组 TestNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41011591/