unit-testing - 排除多个组 TestNG

标签 unit-testing testing automation testng

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/

相关文章:

java - 如何捕获 AssertPathsEqual 并将错误打印到控制台?

testing - 在 TFS 构建部署测试中找不到脚本

c# - 将单元测试添加到不是为它设计的代码

jquery - 如何使用Jasmine测试jquery的点击函数,看看它是否调用了自定义方法?

perl - 分布式测试框架

testing - 基于简单文本的全网页回归测试

firefox - 帮助我在 Win7 上填写表格的免费工具/提示?

iphone - 从 Instruments 中的 UI 自动化访问 UIWebView 内容

支持可选参数和 .Net 4.0 的 C# Mocking Framework

javascript - Nock 不拦截 http 请求