测试组概念
- TestNG 允许您执行复杂的测试方法分组。不仅可以声明方法属于组,还可以指定包含其他组的组。可以调用 TestNG 并要求它包含一组特定的组(或正则表达式),同时排除另一组。
- 组在testng.xml文件中指定,可以在
或 标签下使用。 标记中指定的组适用于下面的所有 标记。
注意组的累计的,在
组常用于主流程准入测试和功能测试,一般主流程测试的用例是功能测试的子集,这时可以把主流程测试用例划分属于一个组。
正则表达式描述
在testng.xml中,可以通过正则表达式描述一些匹配的组,示例:
<test name="Test1">
<groups>
<run>
<include name="windows.*"/>
</run>
</groups>
<classes>
<class name="example1.Test1"/>
</classes>
</test>
方法组
还可以使用方法组排除或包含单个方法
<test name="Test1">
<classes>
<class name="example1.Test1">
<methods>
<include name=".*enabledTestMethod.*"/>
<exclude name=".*brokenTestMethod.*"/>
</methods>
</class>
</classes>
</test>
这可以方便地停用单个方法而无需重新编译任何东西,但我不建议过多使用这种技术,因为如果您开始重构 Java 代码(标签中的内容可能不再与您的方法名称匹配)。
组中组
组还可以包括其他组。这些组称为“元组”。
<test name="Regression1">
<groups>
<define name="functest">
<include name="windows"/>
<include name="linux"/>
</define>
<define name="all">
<include name="functest"/>
<include name="checkintest"/>
</define>
<run>
<include name="all"/>
</run>
</groups>
<classes>
<class name="test.sample.Test1"/>
</classes>
</test>
排除组
由于最近的更改而导致测试暂时中断是很常见的,而您还没有时间修复中断。但是,您确实希望干净运行您的功能测试,因此您需要停用这些测试,但请记住它们之后需要重新被激活。
解决这个问题的一个简单方法是创建一个名为“broken”的组,并让这些测试方法属于它。
<test name="Simple example">
<groups>
<run>
<include name="checkintest"/>
<exclude name="broken"/>
</run>
</groups>
<classes>
<class name="example1.Test1"/>
</classes>
</test>
注意:您还可以使用 @Test 和 @Before/After 注释上可用的“enabled”属性来单独禁用测试。
部分组
可以在类级别定义组,然后在方法级别添加组
@Test(groups = { "checkin-test" })
public class All {
@Test(groups = { "func-test" )
public void method1() { ... }
public void method2() { ... }
}
在这个类中,method2() 是在类级别定义的组“checkin-test”的一部分,而 method1() 属于“checkin-test”和“func-test”