实现TestNG分类
将TestNG测试分成三类就像使用上面所讲的group注释一样简单。通常不会有一个具有跨不同测试粒度的方法的测试类,所以在类的级别上,可以有效地应用标记。
例如,下面的类被标记为属于unit测试组。请注意,HierarchyBuilderTest是怎样依靠HierarchyBuilder类型来验证Hierarchy类的行为的。由于这一关系结束于不依赖文件系统或数据库的HierarchyBuilder,因此实际上可以把它看作单元测试:
import org.testng.Assert;
/**
* @testng.test groups="unit"
*/
public class HierarchyBuilderTest {
private Hierarchy hier;
/**
* @testng.before-class = "true" groups="unit"
*/
private void init() throws Exception{
this.hier =
HierarchyBuilder.buildHierarchy(Vector.class);
}
public void validateIsntNull() throws Exception{
Assert.assertNotNull(this.hier,
"should be something!");
}
/**
* @testng.test dependsOnMethods="validateIsntNull"
*/
public void validateValues() throws Exception{
Assert.assertEquals(
this.hier.getHierarchyClassNames().length,
2, "should be 2");
}
}
类似地,系统测试中单独的方法可以用system组标识来标记,示范如下:
public class LoginTest {
private WebTester tester;
/**
* @testng.before-class = "true" groups="system"
*/
protected void init() throws Exception {
this.tester = new WebTester();
this.tester.getTestContext().
setBaseUrl("http://acme.com:8080/ppo/");
}
/**
* @testng.test groups="system"
*/
public void verifyView() {
this.tester.beginAt("/");
this.tester.setFormElement("isbn", "900930390");
this.tester.submit();
this.tester.assertTextPresent("Book in stock");
}
}