大家好,欢迎来到IT知识分享网。
1.TestNG是什么?
TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。
TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展。它的灵感来源于JUnit。它的目的是优于JUnit,尤其是在用于测试集成多类时。 TestNG的创始人是Cedric Beust(塞德里克·博伊斯特)。
TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义测试,它也可以显示如何使用这个新功能在真实的Java语言生产环境中。
2.TestNG的特点
· 注解
· TestNG使用Java和面向对象的功能
· 支持综合类测试(例如,默认情况下,不用创建一个新的测试每个测试方法的类的实例)
· 独立的编译时测试代码和运行时配置/数据信息
· 灵活的运行时配置
· 主要介绍“测试组”。当编译测试,只要要求TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
· 支持依赖测试方法,并行测试,负载测试,局部故障
· 灵活的插件API
· 支持多线程测试
3. TestNG实用功能:
TestNG是一个类似Junit的自动化框架,使用它可以做功能,接口,单元,集成的自动化测试;最常见的是结合Selenium做Web功能自动化测试,结合APPIUM做APP自动化测试,同时它是Java开发人员最广泛的测试框架,常使用Java注解去写测试方法,例如,如果你在TestNG写好了一个测试方法,你只需要在这个方法的前面一行写上“@test”,就相当于告诉TestNG, 这个是一个测试方法,只有添加了这个注册,才会被认为是一个测试用例,才会被执行。
4. TestNG配置文件介绍
4.1 TestNG.xml是TestNG的配置文件,简单来说TestNG就是通过运行这个文件来执行测试用例的,它的主要功能是配置测试用例和测试套件,利用这个文件我们可以跑同一个类或多个不同类的测试用例,具体来说,TestNG通过设置testng.xml文件能做以下事情;
1)创建来源不同包、类、方法的测试套件
2)包括一些选项,例如失败的用例可以重跑。
3)支持使用正则表达式
4)运行把外部参数传入测试方法
5)支持配置多线程的执行环境
4.2简单TestNG.xml配置如下:
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd”>
<suite name=”Default Suite”>
<test name=”Java_Learn”>
<classes>
<class name=”com.java.learn.TestNG_Demo1″/>
</classes>
</test>
</suite>
4.3我们可以看出来,suite管理多个test,而test管理多个class,最小单元是一个class文件,下面就以运行同一个包下的不同测试类和不同包下测试类怎样将其添加到配置文件中;
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd”>
<suite name=”Default Suite”>
<test name=”Java_Learn”>
<classes>
<class name=”com.java.learn.TestNG_Demo1″/> <!– com.java.learn包下的TestNG_Demo1类 –>
<!– 添加不同测试类文件 –>
<class name=”com.java.learn.TestNG_Demo2″/> <!– com.java.learn包下的TestNG_Demo2类 –>
<class name=”demo2.TestNG_Demo3″/> <!– demo2包下的TestNG_Demo3类 –>
</classes>
</test> <!– Java_Learn –>
</suite> <!– Default Suite –>
5. TestNG的注解
5.1 @Before和@After 注解
Before分类有@BeforeSuite,@BeforeTest, @BeforeGroups,@BeforeClass,@BeforeMethod
After分类有@AfterSuite,@ AfterTest, @AfterGroups,@ AfterClass,@ AfterMethod
注:套件测试是什么东西? 套件测试是一起运行的多个测试类。
5.2@DataProvider注解
标记一个方法是用来给其他测试方法提供数据的方法。要求该方法必须返回是object[][].
5.3@Factory注解
标记这个方法是一个工厂,方法必须返回的是一个对象。
5.4@Listeners注解
在一个测试方法上定义一个监听。例如Selenium自动化测试中需要用到这个事件监听功能,方便我们输出日志。
5.5@Parameters注解
描述了如何给一个测试方法传提参数。
5.6@Test注解
在@Test下有很多选项可以设置,例如用例之间的依赖关系等。
注:注解是用来执行测试类的配置,如设置、清理数据库,准备虚拟数据、部署、关闭服务器等;
6. TestNG中测试类、测试组和测试方法
6.1 Test Methods(测试方法)
凡是方法(或者叫函数)前面添加了@Test注解,就叫测试方法,在实际测试中,写的测试用例,其实就是许多个添加@Test的方法。6.2
6.2 Test Classes(测试类)
测试类,一般我们新建一个Java类文件,如果里面方法有@Test,那么就是一个测试类文件。上面是写的复数。这个在testng.xml文件里可以体现,classes下可以有一个或者多个测试类文件。Classes相当于就是一个装class的容器,而class又相当于一个装method的容器。
6.3 Test Groups(测试组)
测试组存在于同一个测试类中,一个组可以包含多个methods。还是可以组嵌套,也是就是一个组可以属于是另外一个组管理,后边会详细讲解TestNG的组测试;
7. TestNG的执行顺序
package com.testngdemo;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class NewTest {
//第1个测试方法
@Test
public void testCase1() {
System.out.println(“第1个测试方法“+“->@Test”);
}
//第2个测试方法
@Test
public void testCase2() {
System.out.println(“第2个测试方法“+“->@Test”);
}
@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”);
}
@AfterTest
public void afterTest() {
System.out.println(“@afterTest”);
}
@BeforeSuite
public void beforeSuite() {
System.out.println(“@beforeSuite”);
}
@AfterSuite
public void afterSuite() {
System.out.println(“@afterSuite”);
}
}
运行结果如下:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/9999.html