第五章内容是TestNG官方文档里面最多的内容,所以就根据内容数量 分成几篇来翻译。
在这只介绍5.1~5.2 分别是测试方法,测试分组
1 测试方法
测试方法使用注解@test。若测试方法有返回值,则需要在testng.xml中设置
allow-return-values的值为true。如下注解
<
suite
allow-return-values
=
"true"
>
<
test
allow-return-values
=
"true"
>
2 测试组(groups)
TestNG运行使用复杂的分组测试方法。不仅可以声明方法属于某组,也可以指定组包含其他组。帮助你使用最灵活的方式区分不同的测试。
在testng.xml中可以指定分组(groups)。可以在<test>或者<suite>标签下。当在<suite>标签下时,适用于其下的所有<test>.注:分组在这些标签下回累计:如果在<suite>中指定组a,在<test>中指定组b。则a和b都会被包含。
比如,常见的两种测试:
检查测试(
Check-in tests):在提交新代码之前运行的测试。这种测试运行快,只要保证没有基本的功能问题。
功能测试(functional tests):这种测试需要覆盖软件所有功能,且至少每天一次。
显然,检查测试是功能测试的子集。TestNG允许您使用直观的方法来指定这样的组。比如,可以指定整个测试类属于"functest"组,其他的方法则属于checktest组:
public class Test1 {
@Test(groups = { "functest", "checkintest" })
public void testMethod1() {
}
@Test(groups = {"functest", "checkintest"} )
public void testMethod2() {
}
@Test(groups = { "functest" })
public void testMethod3() {
}
}
调用方式如下:
<test name="Test1">
<groups>
<run>
<include name="functest"/>
</run>
</groups>
<classes>
<class name="example1.Test1"/>
</classes>
</test>
上面的配置将运行类中的所有测试方法。当组名使用checkintest时,只会运行
testMethod1和testMethod2方法。
使用正则表达式情况:假设一些测试方法不在Linux上运行:
@Test
public class Test1 {
@Test(groups = { "windows.checkintest" })
public void testWindowsOnly() {
}
@Test(groups = {"linux.checkintest"} )
public void testLinuxOnly() {
}
@Test(groups = { "windows.functest" )
public void testWindowsToo() {
}
}
使用下面的配置指运行windows组的测试方法。
<test name="Test1">
<groups>
<run>
<include name="windows.*"/>
</run>
</groups>
<classes>
<class name="example1.Test1"/>
</classes>
</test>
对测试方法进行分组
在testNG.xml中可以配置运行的时候包含或者不包含哪些分组.
<test name="Test1">
<classes>
<class name="example1.Test1">
<methods>
<include name=".*enabledTestMethod.*"/>
<exclude name=".*brokenTestMethod.*"/>
</methods>
</class>
</classes>
</test>