1、TestNG的常见测试用例组织结构如下:
(1)、Test Suite由一个或者多个Test组成。
(2)、Test由一个或者多个测试Class组成。
(3)、一个测试Class由一个或者多个测试方法组成。
2、TestNG的常用注解如下:
@BeforeSuite 注解的方法将只运行一次,在当前测试集合(Suite)中所有测试用例开始运行之前执行。
@AfterSuite 注解的方法将只运行一次,在当前测试集合(Suite)中所有测试用例运行结束之后执行。
@BeforeTest 注解的方法将在Test中所有测试用例开始运行之前执行。
@AfterTest 注解的方法将在Test中所有测试用例运行结束之后执行。
@BeforeGroups 注解的方法将在分组测试用例的所有测试用例开始运行之前执行。
@AfterGroups 注解的方法将在分组测试用例的所有测试用例运行结束之后执行。
@BeforeClass 注解的方法将在当前测试类(class)的第一个测试方法开始调用前执行。
@AfterClass 注解的方法将在当前测试类(class)的所有测试用例运行结束之后执行。
@BeforeMethod 注解的方法将在每个测试方法开始运行前运行。
@AfterMethod 注解的方法将在每个测试方法运行结束之后执行。
@DataProvider 提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 返回TestNG测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个测试方法(测试用例)。
3、使用注解编写TestNG测试用例的步骤:
(1) 在工程下新建一个java类,输入测试代码:
package cn.testng;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.AfterSuite;
public class Annotation {
@Test
public void testCase1() {
System.out.println("测试用例1被执行");
}
@Test
public void testCase2() {
System.out.println("测试用例2被执行");
}
@BeforeMethod
public void beforeMethod() {
System.out.println("beforeMethod在每个测试方法开始运行前执行");
}
@AfterMethod
public void afterMethod() {
System.out.println("afterMethod在每个测试方法运行结束后执行");
}
@BeforeClass
public void beforeClass() {
System.out.println("beforeClass在当前测试类的第一个测试方法开始调用前执行");
}
@AfterClass
public void afterClass() {
System.out.println("afterClass在当前测试类的最后一个测试方法运行结束后执行");
}
@BeforeTest
public void beforeTest() {
System.out.println("beforeTest在测试类中Test开始运行前执行");
}
@AfterTest
public void afterTest() {
System.out.println("afterTest在测试类中Test运行结束后执行");
}
@BeforeSuite
public void beforeSuite() {
System.out.println("beforeSuite在当前测试集合(Suite)中所有测试程序开始运行前执行");
}
@AfterSuite
public void afterSuite() {
System.out.println("afterSuite当前测试集合(Suite)中所有测试程序运行结束后执行");
}
}
(2) 选中“Annotation.java”类名,单击鼠标右键,在弹出的快捷菜单中选择“Run As”---"TestNG Test"命令,开始执行当前测试类中TestNG测试用例:
(3)测试结果如下:
[TestNG] Running:
C:\Windows\Temp\testng-eclipse--1889416676\testng-customsuite.xml
beforeSuite在当前测试集合(Suite)中所有测试程序开始运行前执行
beforeTest在测试类中Test开始运行前执行
beforeClass在当前测试类的第一个测试方法开始调用前执行
beforeMethod在每个测试方法开始运行前执行
测试用例1被执行
afterMethod在每个测试方法运行结束后执行
beforeMethod在每个测试方法开始运行前执行
测试用例2被执行
afterMethod在每个测试方法运行结束后执行
afterClass在当前测试类的最后一个测试方法运行结束后执行
afterTest在测试类中Test运行结束后执行
PASSED: testCase1
PASSED: testCase2
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
afterSuite当前测试集合(Suite)中所有测试程序运行结束后执行
===============================================
Default suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@24dfb3be: 0 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@69922b29: 16 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@bcbe4b0: 15 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@2b86616b: 16 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@677d8938: 62 ms