定义:TestNg是设计测试用例执行测试用例的测试框架。Test NG是一种单元测试的框架,他借鉴了Junit和Nunit框架的优秀思想,引入了更易用和更强大的功能。TestNG消除了一些老式框架的限制,让程序员通过注解、分组、序列、参数化等多种方式组织和执行自动化测试脚本。
testng是一个优秀的测试框架,我们在开发自动化测试脚本或者框架的时候经常会用到这个框架,因为它不仅能方便的帮助我们管理测试类,而且它还提供了丰富的注解来支持各种测试场景的实现(参数化,数据提供者,分组测试,依赖测试,忽略测试,超时测试...)。
1.eclipse(maven项目)集成testNg
(1).准备依赖(在pom.xml中添加)
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
(2).准备testng-eclipse插件包,并将相应目录下的文件拷贝到对应eclipse对应文件中去。
解压插件包
将features下org.testng.eclipse_6.9.8.201510130443.rar包解压,解压后的同名目录放到eclipse的futures目录。
将plugins下org.testng.eclipse_6.9.8.201510130443.rar包解压,解压后的同名目录放到eclipse的plugins目录。
然后重启eclipse,然后查看是否有TestNG,有就成功啦!
2.testNg常用注解
(1).准备testNg.xml(可以通过新增testNg.class,也可以直接拷贝通过的)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义了配置文件的模板和约束 -->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 注:如果没有,parameter 中的一些元素加载不出来,比如name等
<!-- 套件,所谓套件就是将所有的测试类整理在一块,形成一套测试用例 -->
<suite name="Suite"><!-- parallel="false"并发,暂时不考虑 -->
<!-- 测试集就是测试类的集合,一般我们把一个小模块当做test测试集来设计,比如登录,注册等 -->
<test name="register">
<groups>
<run>
<include name="a"></include>
</run>
</groups>
<!-- test下的测试类的集合 -->
<classes>
<!--每个测试类,要执行的类,name属性指定测试类的路径 -->
<class name="com.lemon.maven.GroupsDemo" />
</classes>
<!-- 参数 -->
<parameter name="userName" value="YOyo"></parameter>
<parameter name="userAge" value="18"></parameter>
</test>
</suite>
执行方法:右键testng.xml--Run as-TestNG Suite
(2)
- 配置注解
-@ BeforeSuite:当前的测试集合中的任一测试用例开始运行之前执行
- @AfterSuite:当前的测试集合中所有的测试用例执行结束后执行
- @BeforeTest:Test中任一测试用例开始执行之前执行
- @AfterTest:Test所有的测试用例运行结束后执行
- @BeforeGroups:分组测试用例中的任一测试用例执行前执行
- @AfterGroups:分组测试用例全部运行结束后执行
- @BeforeClass:当前测试类的任一测试用例开始执行前执行
- @AfterClass:当前的测试类的测试用例全部运行结束后执行
- @BeforeMethod:每个测试方法开始运行前执行
- @AfterMethod:每个测试方法运行结束后执行
- @Test:一个测试方法,即一个测试用例
执行结果
- 参数化(1:@Parameters;2:@DataProvider)
@Parameters
@DataProvider
数据提供源可以指定name,方法调用的时候使用name即可,如果不指定,方法调用的时候使用方法名即可
数据源为一个二维数组
- 依赖测试@Test(dependsOnMethods={"方法名称"})
- 忽略测试@Test(enabled=false)
- 分组测试@Test(groups={"a"})
超时测试@Test(timeOut=1)
后面再更新更多testNg 注解的使用方法和其他用法