TestNG是一个测试框架,其灵感来自JUnit和NUnit的,但引入了一些新的功能,使其功能更强大,使用更方便。
TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit 4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。 TestNG的创造者是Cedric Beust(塞德里克·博伊斯特)
TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中。
1.注解
2.TestNG使用Java和面向对象的功能
3.支持综合类测试(例如,默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)
4.独立的编译时间测试代码运行时配置/数据信息
5.灵活的运行时配置
6.主要介绍“测试组”。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
7.支持依赖测试方法,并行测试,负载测试,局部故障
8.灵活的插件API
1.TestNG的几种不同的方法可以被调用:
1)testng.xml文件
2)ant
3)命令行
2.编写TestNG测试基本上包括以下步骤:
1)测试和编写业务逻辑,在代码中插入TestNG的注解..
2)添加一个testng.xml文件或build.xml中在测试信息(例如类名,您想要运行的组,等..)
2.test代表一个测试,并可以包含一个或多个TestNG的类
TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit 4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。 TestNG的创造者是Cedric Beust(塞德里克·博伊斯特)
TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中。
官网:http://testng.org/doc/index.html
教程:http://testng.org/doc/documentation-main.html
一、特点1.注解
2.TestNG使用Java和面向对象的功能
3.支持综合类测试(例如,默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)
4.独立的编译时间测试代码运行时配置/数据信息
5.灵活的运行时配置
6.主要介绍“测试组”。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
7.支持依赖测试方法,并行测试,负载测试,局部故障
8.灵活的插件API
9.支持多线程测试
二、注解
TestNG的支持列表中的注解:
注解 | 描述 |
---|---|
@Before Suite | 注解的方法将只运行一次,运行所有测试前此套件中。 |
@AfterSuite | 注解的方法将只运行一次此套件中的所有测试都运行之后。 |
@BeforeClass | 注解的方法将只运行一次先行先试在当前类中的方法调用。 |
@AfterClass | 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。 |
@BeforeTest | 注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。 |
@AfterTest | 注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。 |
@BeforeGroups | 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。 |
@AfterGroups | 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。 |
@BeforeMethod | 注解的方法将每个测试方法之前运行。 |
@AfterMethod | 被注释的方法将被运行后,每个测试方法。 |
@DataProvider |
标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。 |
@Factory | 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。 |
@Listeners | 定义一个测试类的监听器。 |
@Parameters | 介绍如何将参数传递给@Test方法。 |
@Test | 标记一个类或方法作为测试的一部分。@Test(enabled = false)禁用此测试案例。 |
三、执行测试用例
使用TestNG类执行测试用例。这个类的主入口点在TestNG的框架运行测试。用户可以创建自己的TestNG的对象,并调用它以许多不同的方式:
1.在现有的testng.xml
2.合成testng.xml,完全从Java创建
3.直接设定测试类
您还可以定义哪些群体包括或排除,分配参数,命令行参数:
-d outputdir: 指定输出目录
-testclass class_name: 指定了一个或多个类名
-testjar jar_name: 指定的jar包含测试
-sourcedir src1;src2: ; 分隔源目录列表(只有当使用的javadoc注释)
-target
-groups
-testrunfactory
-listener
四、测试实例1.TestNG的几种不同的方法可以被调用:
1)testng.xml文件
2)ant
3)命令行
2.编写TestNG测试基本上包括以下步骤:
1)测试和编写业务逻辑,在代码中插入TestNG的注解..
2)添加一个testng.xml文件或build.xml中在测试信息(例如类名,您想要运行的组,等..)
3)运行 TestNG.
引入依赖:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.5</version>
</dependency>
测试类:
package cn.slimsmart.unit.test.demo.testng;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestNGTest {
@Test
public void testEquals() {
String str = "abc";
Assert.assertEquals("abc", str);
}
@Test
public void testAdd() {
int a = 1+3;
Assert.assertTrue(a==4);
}
}
testng.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite">
<test name="test">
<classes>
<class name="cn.slimsmart.unit.test.demo.testng.TestNGTest"/>
</classes>
</test>
</suite>
1.suite代表一个XML文件。它可以包含一个或多个测试,并被定义由<suite>标记,属性
属性 | 描述 |
---|---|
name | 此套件的名称。这是一个强制性的属性。 |
verbose | 这个运行级别或冗长。 |
parallel | 由TestNG 运行不同的线程来运行此套件。 |
thread-count | 使用的线程数,如果启用并行模式(忽略其他方式)。 |
annotations | 在测试中使用注释的类型。 |
time-out | 默认的超时时间,将用于本次测试中发现的所有测试方法。 |
可以添加junit="true",让测试用例支持junit
3.class代表一个TestNG的类是一个Java类,它包含至少一个TestNG的注解。它可以包含一个或多个测试方法。
运行TestNG,安装eclipse插件运行,
参考:http://www.blogjava.net/qileilove/archive/2014/09/02/417593.html
参考文章:
1.TestNG教程