【本系列其他教程正在陆续翻译中,点击分类:TestNG进行查看。】
【翻译 by 明明如月 QQ 605283073】
原文地址:http://websystique.com/java/testing/testng-groups-example/
本文将介绍TestNG 组测试中@BeforeGroups
, @AfterGroups注解的使用。
TestNG 允许我们通过组的形式来运行多个测试方法。
我们可以根据行为等将测试方法进行分组。
多个测试可以属于一个组,一个测试也可以成为多个组的一部分。
--------------------------------------
带@BeforeGroups注解的方法将在本组内任何测试方法执行前被执行一次。
和此类似的是带@AfterGroups 注解的方法将在本组内任何测试方法执行后被执
package com.websystique.testng;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
public class TestNGGroupExample {
@BeforeGroups("security")
public void setUpSecurity() {
System.out.println("setUpSecurity()");
}
@AfterGroups("security")
public void tearDownSecurity() {
System.out.println("tearDownSecurity()\n");
}
@BeforeGroups("database")
public void setUpDatabase() {
System.out.println("setUpDatabase()");
}
@AfterGroups("database")
public void tearDownDatabase() {
System.out.println("tearDownDatabase()\n");
}
@BeforeGroups(value="ui")
public void setUpUI() {
System.out.println("setUpUI()");
}
@AfterGroups(value="ui")
public void tearDownUI() {
System.out.println("tearDownUI()\n");
}
@Test(groups= "database")
public void testInsert(){
System.out.println("testInsert()");
}
@Test(groups= "database")
public void testUpdate(){
System.out.println("testUpdate()");
}
@Test(groups= "database")
public void testDelete(){
System.out.println("testDelete()");
}
@Test(groups= "security")
public void accessHomePage() {
System.out.println("accessHomePage()");
}
@Test(groups= "security")
public void accessAdminPage() {
System.out.println("accessAdminPage()");
}
@Test(groups= "ui")
public void openConfirmationDialog() {
System.out.println("openConfirmationDialog()");
}
@Test(groups= "ui")
public void openFileDialog() {
System.out.println("openFileDialog()");
}
}
mvn clean test或者第一篇文章提到的TestNG eclipse 插件运行此测试:
setUpSecurity()
accessAdminPage()
accessHomePage()
tearDownSecurity()
setUpUI()
openConfirmationDialog()
openFileDialog()
tearDownUI()
setUpDatabase()
testDelete()
testInsert()
testUpdate()
tearDownDatabase()
PASSED: accessAdminPage
PASSED: accessHomePage
PASSED: openConfirmationDialog
PASSED: openFileDialog
PASSED: testDelete
PASSED: testInsert
PASSED: testUpdate
===============================================
Default test
Tests run: 7, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 7, Failures: 0, Skips: 0
===============================================
@BeforeGroups 在本组内任何测试方法执行前被调用一次。
@AfterGroups
在本组内任何测试方法执行后被调用一次。
假设我们只想执行安全和数据库相关的测试,而不是ui相关的。
我们可以使用testNG configuration xml 文件将ui排除出去。
src/test/resources文件夹下创建testng.xml
如果你实用的是基于maven的项目,可以配置pom.xml中的 maven-surefire-plugin
下面是pomx.ml的配置:
ersion>
src/test/resources/testng.xml
右键 testng.xml file->RunAs->TestNG Suite]
setUpSecurity()
accessAdminPage()
accessHomePage()
tearDownSecurity()
setUpDatabase()
testDelete()
testInsert()
testUpdate()
tearDownDatabase()
===============================================
tests
Total tests run: 5, Failures: 0, Skips: 0
===============================================
你可以看到 ui 相关的测试方法和对应的beforeGroups/afterGroups 并没有被运行。