TestNG单元测试框架比JUnit要更强大,它提供了更多的拓展功能。目前,大部分自动化测试人员开始转向使用TestNG单元测试框架来运行更复杂的自动化测试用例。
TestNG的介绍
TestNG 是一种单元测试框架,由Cedric Beust创建,它借鉴了JUnit和NUnit框架的优秀设计思想,引入更易用和更强大的功能。TestNG是一种开源自动化测试框架,NG就是下一代 的意思(Next Generation)。TestNG的使用和JUnit有些类似,但是它的设计实现比JUnit框架更好,提供了更灵活和更强大的功能。TestNG消 除了一些老式框架的限制,让程序员通过注解、分组、序列和参数化等多种方式组织和执行自动化测试脚本。
TestNG的优点
1、可指定执行顺序, dependsOnMethods 属性来应对测试的依赖性问题。
2、参数化测试,TestNG 提供了开箱即用的类似特性。通过在 TestNG 的 XML 配置文件中放入参数化数据,就可以对不同的数据集重用同一个测试用例,甚至有可能会得到不同的结果。支持@DataProvider 注释可以方便地把复杂参数类型映射到某个测试方法。
3、支持分组测试
4、支持多线程测试
5、能生成HTML格式的测试报告
在eclipse中安装TestNG插件
在eclipse中在线安装TestNG
1、打开Eclipse Help ->Install New Software , 在弹出的窗口上单击“Add”按钮。
2、在弹出的对话框中的“Name”输入框中输入“TestNG”,“Location”输入框中输入“http://beust.com/eclipse”,单击“OK”按钮。
4、在弹出的“Install”对话框中,勾选“TestNG”复选框,单击“Next”。
5、一直点击“Next”,在以下页面中,选择“I accept the terms....”,点击“Finish”
6、eclipse开始安装TestNG插件,安装过程中,弹出警告框,单击‘OK’按钮继续安装。
7、安装完成后,系统提示重启eclipse,单击YES
8、重启后,在工程名称上点击右键,弹出的菜单可以看到TestNG菜单项,代表安装成功。
在eclipse中离线安装TestNG
1、下载TestNG离线安装包,此处提供一个下载地址https://pan.baidu.com/s/1chAaMenZwYRpyK7IaqyK1A
2、将解压后的文件..\eclipse-testng插件\features\org.testng.eclipse_6.8.6.20130607_0745,这个文件夹放到..\eclipse\features下。
3、将解压后的文件..\eclipse-testng插件\plugins\org.testng.eclipse_6.8.6.20130607_0745,这个文件夹放到..\eclipse\plugins下。
4、重启eclipse,安装成功。
5、验证是否安装成功,跟在线安装的验证方法一样。
TestNG注解
TestNG的常见测试用例组织结构如下:
- Test Suite由一个或者多个Test组成。
- Test由一个或者多个测试Class组成。
- 一个测试Class由一个或者多个测试方法组成。
在testing.xml中的配置层级结构如下:
<suite>
<test>
<classes>
<method>
</method>
</classes>
</test>
</suite>
运行不同层级的测试用例时,可通过不同注解实现测试前的初始化工作、测试用例执行工作和测试后的清理工作。
TestNG常用的注解
注解名称 |
注解含义 |
@BeforeSuite |
注解的方法将只运行一次,运行所有测试前此套件中。 |
@AfterSuite |
注解的方法将只运行一次此套件中的所有测试都运行之后。 |
@BeforeClass |
注解的方法将只运行一次先行先试在当前类中的方法调用。 |
@AfterClass |
注解的方法将只运行一次后已经运行在当前类中的所有测试方法。 |
@BeforeTest |
注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。 |
@AfterTest |
注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。 |
@BeforeGroups |
组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。 |
@AfterGroups |
组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。 |
@BeforeMethod |
注解的方法将每个测试方法之前运行。 |
@AfterMethod |
被注释的方法将被运行后,每个测试方法。 |
@DataProvider |
标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。 该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。 |
@Factory |
作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。 |
@Listeners |
定义一个测试类的监听器。 |
@Parameters |
介绍如何将参数传递给@Test方法。 |
@Test |
标记一个类或方法作为测试的一部分。 |