这里提供下testng官方文档链接,感兴趣的小伙伴,可以直接点击阅读。
一、什么是TestNG
TestNG是一个测试java应用程序的开源框架。目的在于简化广泛的测试需求,小到单元测试(单独测试一个类),大到集成测试(测试由几个类,几个包甚至几个外部框架组成的整个系统,如 应用服务器)。
编写测试通常需要三个步骤:
- 第一步:编写测试的业务逻辑并在代码中插入TestNG注释。
- 第二步:在testng.xml文件或build.xml中添加有关测试的信息(例如,类名,要运行的组等)。
- 第三步:Run TestNG.
下面介绍一些TestNG涉及到的名词:
- suite(套件):套件由一个XML文件表示。 它可以包含一个或多个测试,由<suite>标签定义。
- test(测试):测试由表示,可以包含一个或多个TestNG类。
- TestNG class(TestNG类):TestNG类是一个包含至少一个TestNG注释的Java类。它由<class>标记表示,可以包含一个或多个测试方法。
- test method(测试方法):测试方法是测试代码中由@Test注释的Java方法。
二、注解总结
注解 (不带@符号的是上面注解的属性) | 描述 |
---|---|
@BeforeSuite | 被注释的方法将在此套件中所有测试方法运行前执行 |
@AfterSuite | 被注释的方法将在此套件中所有测试方法运行后执行 |
@BeforeTest | 被注释的方法将在<test> 标签内的class类包含的所有测试方法运行前执行 【这里有些拗口,不理解的可以跳过,看后面的例子就懂了】 |
@AfterTest | 被注释的方法将在<test> 标签内的class类包含的所有测试方法运行后执行 |
@BeforeGroups | 被配置的方法将在列表中的gourp前运行。此方法是保证在运行属于任何这些组第一个测试方法前,该方法被调用。 |
@AfterGroups | 被配置的方法将在列表中的gourp后运行。此方法是保证在运行属于任何这些组最后一个测试方法后,该方法被调用。 |
@BeforeClass | 被注释的方法将在当前类的第一个测试方法调用前执行 |
@AfterClass | 被注释的方法将在当前类的所有测试方法运行后执行 |
@BeforeMethod | 在每个测试方法运行前执行 |
@AfterMethod | 在每个测试方法运行后执行 |
alwaysRun | 对于before方法(beforeSuite, beforeTest, beforeTestClass and beforeTestMethod, 但不包括beforeGroups):如果被设置为true,被配置的方法不管属于哪个组,都会被执行 对于after方法 (afterSuite, afterClass, …): 如果被设置为true,即使先前调用的一个或多个方法执行失败或跳过,被配置的方法依然执行 |
dependsOnGroups | 此方法依赖的组列表 |
dependsOnMethods | 此方法所依赖的方法列表。 |
enabled | 是否启用此类/方法上的方法。 |
groups | 此类/方法所属的组列表。 |
inheritGroups | 如果设置为true,此方法将属于类上指定@Test注解的组 |
onlyForGroups | 仅适用于@BeforeMethod和@AfterMethod。 如果指定,则仅当相应的测试方法属于列出的组之一时,才会调用此setup / teardown方法。 |
@DataProvider | 标记的方法为测试方法提供数据。带注释的方法必须返回一个Object [] [],其中每个Object []都可以被赋值测试方法的参数列表。 若@Test方法想要从此DataProvider接收数据,那么@Test方法的dataProvider名称需要与此注解的名称相同。 |
name | |
parallel | |
@Factory | 将方法标记为工厂,返回将由TestNG用作Test类的对象。 该方法必须返回Object []。 |
@Listeners | 定义一个测试类的监听器。 |
value | |
@Parameters | 描述如何将参数传递给@Test方法。 |
value | |
@Test | 标记一个类或方法作为测试的一部分。 |
alwaysRun | |
dataProvider | |
dataProviderClass | |
dependsOnGroups | |
dependsOnMethods | |
description | |
enabled | |
expectedExceptions | |
groups | |
invocationCount | |
invocationTimeOut | |
priority | |
successPercentage | |
singleThreaded | |
timeOut | |
threadPoolSize |
三、简单入门案例
下面使用testng框架,执行一个最最简单的测试用例。
第一步:pom.xml添加依赖包
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1</version>
</dependency>
第二步:编写测试class文件
import org.testng.annotations.Test;
public class BasicAnnotation {
//最基本的注解,用来把方法标记为测试的一部分
@Test
public void testCase1(){
System.out.println("这是测试用例1");
}
}
第三步:点击testCase1左侧的绿色三角按钮,运行测试方法