【本系列其他教程正在陆续翻译中,点击分类:TestNG进行查看。】
【翻译 by 明明如月 QQ 605283073】
原文地址:http://websystique.com/java/testing/testng-groups-example/
本文将介绍TestNG 组测试中@BeforeGroups
, @AfterGroups注解的使用。
TestNG 允许我们通过组的形式来运行多个测试方法。
我们可以根据行为等将测试方法进行分组。
多个测试可以属于一个组,一个测试也可以成为多个组的一部分。
--------------------------------------
@BeforeGroups, @AfterGroups
带@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 在本组内任何测试方法执行后被调用一次。
Group 拓展:
假设我们只想执行安全和数据库相关的测试,而不是ui相关的。
我们可以使用testNG configuration xml 文件将ui排除出去。
src/test/resources文件夹下创建testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
<test name="backend">
<groups>
<run>
<exclude name="ui" />
</run>
</groups>
<classes>
<class name="com.websystique.testng.TestNGGroupExample" />
</classes>
</test>
</suite>
如果你实用的是基于maven的项目,可以配置pom.xml中的 maven-surefire-plugin
下面是pomx.ml的配置:
ersion>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
右键 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 并没有被运行。