测试框架TestNG介绍

发布于 更新于

技术文章

一、TestNG基本介绍TestNG是Java中的一个测试框架,是一个目前很流行实用的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试,最常见的是结合s...

一、TestNG基本介绍


TestNG是Java中的一个测试框架,是一个目前很流行实用的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试,最常见的是结合selenium做功能自动化测试,它使用Java注释去写测试方法。


测试人员一般用TestNG来写自动化测试,开发人员一般用Junit写单元测试,TestNG适合测试人员使用的原因:


比Junit涵盖功能更全面的测试框架;


Junit更适合隔离性比较强的单元测试;


TestNG更适合复杂的集成测试。


编写一个测试的过程包含以下步骤:


编写测试的业务逻辑并在代码中插入TestNG annotation;


将测试信息添加到testng.xml文件或build.xml中;


运行TestNG。


二、TestNG使用


TestNG应用上相对来说比较简单,把它的注解理解了,相当于会了一大半了。


1. 在Maven中引用TestNG


使用Maven作为项目管理工具,需要在pom.xml中添加以下依赖,将groupId、artifactId和version引进来后,就可以使用Maven框架进行自动下载和使用。

       org.testng


       testng


       6.10


2. 在IDEA中创建module


新建一个文件夹用于该项目:AutoTest。使用IntelliJ IDEA打开该文件夹(File—>open),在该文件夹上面点击右键—>New—>module(module意思是它都归这个工程管)—>选择Maven点击Next—>填写GroupId和ArtifactId,点击Next—>创建了一个module,点击Finished(GroupId:一般是域名的反写,也作为项目中类的包名,是main目录里java的目录结构;ArtifactId:工程名,也就是根文件夹名)


创建了一个module,被认为工程的标志,根文件夹名前右下角为蓝色的,java前也是蓝色的,resources资源目录文件是图中的文件标志,工程目录结构如图所示:


3. 最基本的注解@Test


Module已创建完毕后,就可以开始了解TestNG的基本注解啦。


1)在java文件上右击—>new—>Package,创建一个包,包名:com.test.testng。(在公司,开发一个项目的时候每个功能模块肯定是放在某个包下,一般包名是以:最高域名.公司名/个人名.模块名)


2)在包中创建一个类,这个类就是为了运行TestNG里的代码创建的。点击包右键—>new—>Java Class,输入类名:BasicAnnotation—>OK


3)在pom中引用TestNG。TestNG与IDEA集成的比较好的一点是:假设在pom中没引用TestNG,也会进行提示。


4)创建一个方法:testCase1,在方法前加“@Test”,是最基本的注解,用来把方法标记为测试的一部分。


在@Test为红色时,说明没有import对应的方法,在此我们可以进行设置一下自动优化导入包:


File—>settings—>Editor—>General—>Auto Import,将下图中1和2 进行勾选,1:IDEA将在我们写代码的时候自动棒我们导入需要用到的包,但是有多个同名的类调用不同的包,还是需要手动(Alt+Enter)设置。2:IDEA将在我们写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用的包。


4. 注解之@BeforeMethod和@AfterMethod


除了最基本的注解外,还有标签可以进行标注在这个方法之前或者之后运行。


创建两个方法:beforeMethod和afterMethod, 同时再创建一个testCase2方法—>Run类,输出内容可以更直观理解。注:输入sout回车,即可输出System.out.println()。


可以看到,BeforeMethod/AfterMethod在每个方法运行之前/之后都会运行一次。在以后写测试用例时,在测试方法之前/之后必须要运行的都可以写到BeforeMethod/AfterMethod里。



5. 注解之@BeforeClass和@AfterClass


@BeforeClass和@AfterClass是在类运行之前和之后的注解。


创建两个方法:beforeClass和afterClass—>Run类,如下图所示:


@BeforeClass和@AfterClass使用场景举例:在类运行前,是否需要变量赋值、初始化对象等,写完后其它方法里就都可以使用了。


6. 注解之@BeforeSuite和@AfterSuite


在注解中,执行顺序非常非常重要。测试套件注解:创建两个方法beforeSuite和afterSuite—>Run类,结果如下图所示。


根据结果可以看到:Suite把class包裹起来了,说明类在运行之前运行了Suite,Suite可以包含多个Class,类是属于某个套件之下的。


继续阅读