测试组概念
- 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”
