TestNG官方文档:
https://testng.org/doc/documentation-main.html#testng-xml
https://testng.org/doc/documentation-main.html
TestNG介绍
TestNG有几个显著且好用的特点。
1、注解功能,系列中会写到各个注解的作用及示例
2、参数化测试
3、支持组的概念
4、多线程测试
5、支持依赖测试方法,并行测试,负载测试,局部故障
Idea集成TestNG
1、项目中配置了maven,则引入以下依赖就行
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.10</version>
<scope>test</scope>
</dependency>
2、编写测试业务逻辑,在代码中插入TestNG的注解
3、在TestNG对应的配置文件testng.xml或build.xml中配置测试信息
4、运行TestNG即可。
集成完后库有
TestNG使用
TestNg例子
package com.ciphergateway.testcast;
import org.testng.Assert;
import org.testng.annotations.Test;
public class intercase {
@Test
public void Test1() {
System.out.println("Test1");
Assert.assertTrue(true);
}
@Test
public void Test2() {
System.out.println("Test2");
Assert.assertTrue(true);
}
}
执行结果:
组测试
分组测试即为使用group,如果你使用xml的话就是里边的<groups>标签,如果是直接在class中,是通过@Test(groups="group2")这种方式来分组.这个group说明可以是在单个的测试方法上,也可以在class上,只要具有同样的group名称都会在同一个group中,同时group名称可以有多个,类似@Test(groups = {"group1","group2"})这种,范例如下:
package com.ciphergateway.testcast;
import org.testng.Assert;
import org.testng.annotations.*;
public class test2 {
@Test(groups="group1")
public void test1() {
System.out.println("test1 from group1");
Assert.assertTrue(true);
}
@Test(groups="group1")
public void test11() {
System.out.println("test11 from group1");
Assert.assertTrue(true);
}
@Test(groups="group2")
public void test2()
{
System.out.println("test2 from group2");
Assert.assertTrue(true);
}
@BeforeTest
public void beforeTest()
{
System.out.println("beforeTest");
}
@AfterTest
public void afterTest()
{
System.out.println("afterTest");
}
@BeforeClass
public void beforeClass()
{
System.out.println("beforeClass");
}
@AfterClass
public void afterClass()
{
System.out.println("afterClass");
}
@BeforeSuite
public void beforeSuite()
{
System.out.println("beforeSuite");
}
@AfterSuite
public void afterSuite()
{
System.out.println("afterSuite");
}
//只对group1有效,即test1和test11
@BeforeGroups(groups="group1")
public void beforeGroups()
{
System.out.println("beforeGroups");
}
//只对group1有效,即test1和test11
@AfterGroups(groups="group1")
public void afterGroups()
{
System.out.println("afterGroups");
}
@BeforeMethod
public void beforeMethod()
{
System.out.println("beforeMethod");
}
@AfterMethod
public void afterMethod()
{
System.out.println("afterMethod");
}
}
执行结果:
在TestNG对应的配置文件testng.xml和maven-surefire-plugin使用
testng.xml例子:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="HuTests"> <test name="a-t1" preserve-order="true" > <classes> <class name="com.ciphergateway.testcast.intercase" /> <class name="com.ciphergateway.testcast.test2" /> </classes> </test> </suite> |
use TestNG suite XML files
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> |
参考:https://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html
TestNG说明
注解说明
TestNG支持多种注解,可以进行各种组合,如下进行简单的说明
注解 | 描述 |
@BeforeSuite | 在该套件的所有测试都运行在注释的方法之前,仅运行一次 |
@AfterSuite | 在该套件的所有测试都运行在注释方法之后,仅运行一次 |
@BeforeClass | 在调用当前类的第一个测试方法之前运行,注释方法仅运行一次 |
@AfterClass | 在调用当前类的第一个测试方法之后运行,注释方法仅运行一次 |
@BeforeTest | 注释的方法将在属于test标签内的类的所有测试方法运行之前运行 |
@AfterTest | 注释的方法将在属于test标签内的类的所有测试方法运行之后运行 |
@BeforeGroups | 配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行 |
@AfterGroups | 此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行 |
@BeforeMethod | 注释方法将在每个测试方法之前运行 |
@AfterMethod | 注释方法将在每个测试方法之后运行 |
@DataProvider | 标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称 |
@Factory | 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object [] |
@Listeners | 定义测试类上的侦听器 |
@Parameters | 描述如何将参数传递给@Test方法 |
@Test | 将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法 |
TestNG断言
TestNG的断言种类很多,包括相等/不相等,true/false、为null/不为null、相同/不相同等。-->本次还未用到,下次总结
参考:
学习Maven之Maven Surefire Plugin(JUnit篇) - 辵鵵 - 博客园
https://www.dazhuanlan.com/oppanuna/topics/1364119