TestNG 入门教程

原文出处:http://www.cnblogs.com/TankXiao/p/3888070.html

阅读目录

  1. TestNG介绍
  2. 在Eclipse中在线安装TestNG
  3. 在Eclipse中离线安装Testng
  4. TestNG最简单的测试
  5. TestNG的基本注解
  6. TestNG中如何执行测试
  7. 使用testtng.xml 文件执行 case
  8. TestNG按顺序执行Case
  9. TestNG异常测试
  10. TestNG组测试
  11. TestNG参数化测试
  12. TestNG忽略测试
  13. TestNG 依赖测试
  14. TestNG测试结果报告

TestNG介绍

TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便

Java中已经有一个JUnit的测试框架了。  TestNG比JUnit功能强大的多。  测试人员一般用TestNG来写自动化测试。  开发人员一般用JUnit写单元测试。

官方网站: http://testng.org/doc/index.html

在Eclipse中在线安装TestNG

打开Eclipse   Help ->Install New Software ,   然后Add   "http://beust.com/eclipse"

在Eclipse中离线安装Testng

首先下载testng离线包:  http://pan.baidu.com/s/1hrEaX6k

1. 将解压后的文件..\eclipse-testng离线包\features\org.testng.eclipse_6.9.9.201510270734  文件夹 放到      eclipse--》features目录下

2. 将解压后的文件..\eclipse-testng离线包\plugins\org.testng.eclipse_6.9.8.201510130443  文件夹  放到                 eclipse--》plugins目录下

3. 重启eclipse

4. 验证是否安装成功,file-->new-->other-->TestNg

TestNG最简单的测试

下面是TestNG的最简单的一个例子

复制代码

package TankLearn2.Learn;import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.testng.annotations.Test;public class TestNGLearn1 {@BeforeClasspublic void beforeClass() {System.out.println("this is before class");}@Testpublic void TestNgLearn() {System.out.println("this is TestNG test case");}@AfterClasspublic void afterClass() {System.out.println("this is after class");}
}

复制代码

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
标记一个类或方法作为测试的一部分。

TestNG中如何执行测试

第一种直接执行:右键要执行的方法,  点Run As ->TestNG Test

使用testtng.xml 文件执行 case

第二种:  通过testng.xml文件来执行. 把要执行的case, 放入testng.xml文件中。 右键点击testng.xml,   点Run As

testng.xml

复制代码

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test12"><classes><class name="TankLearn2.Learn.TestNGLearn1" /></classes></test>
</suite>

复制代码

TestNG按顺序执行Case

在testng.xml中,可以控制测试用例按顺序执行。  当preserve-order="true"是,可以保证节点下面的方法是按顺序执行的

复制代码

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test12" preserve-order="true"><classes><class name="TankLearn2.Learn.TestNGLearn1"><methods><include name="TestNgLearn3" /><include name="TestNgLearn1" /><include name="TestNgLearn2" /></methods></class></classes></test>
</suite>

复制代码

TestNG异常测试

测试中,有时候我们期望某些代码抛出异常。

TestNG通过@Test(expectedExceptions)  来判断期待的异常, 并且判断Error Message

复制代码

package TankLearn2.Learn;import org.testng.annotations.Test;public class ExceptionTest {@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp="NullPoint")public void testException(){throw new IllegalArgumentException("NullPoint");}
}

复制代码

TestNG组测试

TestNG中可以把测试用例分组,这样可以按组来执行测试用例比如:

复制代码

package TankLearn2.Learn;import org.testng.annotations.Test;public class GroupTest {@Test(groups = {"systemtest"})public void testLogin(){System.out.println("this is test login");}@Test(groups = {"functiontest"})public void testOpenPage(){System.out.println("this is test Open Page");}
}

复制代码

然后在testng.xml中 按组执行测试用例

复制代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test1"><groups><run><include name="functiontest" /></run></groups></test>
</suite>

复制代码

TestNG参数化测试

软件测试中,经常需要测试大量的数据集。 测试代码的逻辑完全一样,只是测试的参数不一样。  这样我们就需要一种 “传递测试参数的机制”。 避免写重复的测试代码

TestNG提供了2种传递参数的方式。

第一种: testng.xml 方式使代码和测试数据分离,方便维护

第二种:@DataProvider能够提供比较复杂的参数。 (也叫data-driven testing)

方法一: 通过testng.xml 传递参数给测试代码

复制代码

package TankLearn2.Learn;import org.testng.annotations.Parameters;
import org.testng.annotations.Test;public class ParameterizedTest1 {@Test@Parameters("test1")public void ParaTest(String test1){System.out.println("This is " + test1);}
}

复制代码

testng.xml

复制代码

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><parameter name="test1" value="Tank" /><parameter name="test1" value="Xiao" /><test name="test12"><classes><class name="TankLearn2.Learn.ParameterizedTest1" /></classes></test>
</suite>

复制代码

方式二:   通过DataProvider传递参数

复制代码

package TankLearn2.Learn;import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;public class DataProviderLearn {@DataProvider(name="user")public Object[][] Users(){return new Object[][]{{"root","passowrd"},{"cnblogs.com", "tankxiao"},{"tank","xiao"}};}@Test(dataProvider="user")public void verifyUser(String userName, String password){System.out.println("Username: "+ userName + " Password: "+ password);}
}

复制代码

TestNG忽略测试

有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false),  来禁用此测试用例

复制代码

package TankLearn2.Learn;import org.testng.annotations.Test;public class TesgNGIgnore {@Test(enabled = false)public void testIgnore(){System.out.println("This test case will ignore");}
}

复制代码

TestNG 依赖测试

有时候,我们需要按顺序来调用测试用例,  那么测试用例之间就存在依赖关系。 TestNG支持测试用例之间的依赖

复制代码

package TankLearn2.Learn;import org.testng.annotations.Test;public class DependsTest {@Testpublic void setupEnv(){System.out.println("this is setup Env");}@Test(dependsOnMethods = {"setupEnv"})public void testMessage(){System.out.println("this is test message");}
}

复制代码

TestNG测试结果报告

测试报告是测试非常重要的部分.  

TestNG默认情况下,会生产两种类型的测试报告HTML的和XML的。 测试报告位于 "test-output" 目录下.

当然我们也可以设置测试报告的内容级别. 

verbose="2" 标识的就是记录的日志级别,共有0-10的级别,其中0表示无,10表示最详细

复制代码

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test12" verbose="2"><classes><class name="TankLearn2.Learn.TestNGLearn1" /></classes></test>
</suite>

复制代码

转载于:https://www.cnblogs.com/littlevine/p/6254407.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql去重DISTINCT

在字段前面加上DISTINCT关键字就可以

电脑技巧:电脑弹窗广告三个解决方法

目录 一、开启高级阻止程序 二、禁用任务计划里面的弹窗程序 三、隐藏“弹窗广告”程序 相信很多朋友在使用电脑时&#xff0c;面对突如其来的弹窗广告非常愤怒&#xff0c;尤其是在给客户演示ppt、或者开会投屏的时候&#xff01;自己啥都没干&#xff0c;却平白无故弹出来许多…

FlashBuilder项目环境配置

一 、安装Flash Builder 1. 修改host文件 1.1 找到host文件&#xff0c;复制到桌面修改。 在“C:\Windows\System32\drivers\etc”文件夹下&#xff0c;将host文件复制到桌面。 1.2 修改host文件 打开host&#xff0c;增加以下链接&#xff0c;直接复制到最后即可。 127.0.0.…

办公技巧:分享100个Excel快捷键

今天给大家分享100个Excel快捷键&#xff0c;值得收藏&#xff01; 1、CtrlC 复制 2、CtrlV 粘贴 3、CtrlA 全选 4、Ctrl 显示公式 5、CtrlN 新建工作簿 6、CtrlD 单元格 7、CtrlR 单元格内容向右复制 8、CtrlPage up 移动到上一个工作表 9、CtrlPage down 移动到下一个工作表 …

Linux操作系统启动流程简单介绍

Linux 系统的启动&#xff0c;从计算机开机通电自检开始&#xff0c;一直到登陆系统&#xff0c;需要经历多个过程。了解 Linux操作系统的启动过程&#xff0c;对Linux操作系统更深入认识和日常的运维工作非常有帮助&#xff0c;感兴趣的朋友可以了解一下。 今天主要介绍一下Ce…

mysql使用 CONCAT(字段,字段) 函数拼接

SELECT CONCAT(字段,字段) AS 别名 FROM 表名;

APP技巧:手机连接WiFi后,移动数据流量要不要关闭,看完你就懂了

目录 1、流量耗尽 2、电量不够用 3、下载任务 在移动互联网普及的今天&#xff0c;大家想上网是非常容易的一件事情。打开手机数据流量一秒钟就能连接上互联网&#xff0c;享受网络带来的乐趣。不论是刷视频看电影还是下载需要的文件&#xff0c;统统都能够通过移动数据来搞定。…

后台管理工程搭建

Maven使用Maven作为后台管理工程的构建工具&#xff0c;主要用到了以下功能 依赖管理&#xff1a;包括jar的依赖&#xff0c;工程之间的依赖 项目构建&#xff1a;实现项目的一步构建 工程聚合、继承、依赖 Maven工程类型&#xff1a;war、jar、pom taotao-parent 父工程的搭建…

电脑技巧:电脑故障维修常见的故障整理

目录 一、电脑不能上网 二、 电脑蓝屏 三、电脑没有声音 四、屏幕不显示 五、软件无法启动 六、显示器画面不能满屏显示 七、电脑使用过程中自动关机 八、电脑开不了机 今天小编给大家分享几个常见的故障&#xff0c;感兴趣的朋友可以了解一下&#xff01; 一、电脑不能上网 常…

mysql中IFNULL(字段名,默认值) 给null设置默认值

SELECT IFNULL(字段名,默认值) as 别名 FROM 表名;

操作系统:SSH协议知识介绍

今天给大家分享SSH协议相关的知识介绍&#xff0c;希望对大家能有所帮助&#xff01; 1、SSH协议概念介绍 SSH(Secure Shell)安全外壳协议&#xff0c;是一种建立在应用层基础上的安全协议&#xff0c;通过对密码进行加密传输验证&#xff0c;可以在不安全的网络中对网络服务提…

操作系统:分享Win11几个实用小技巧,赶快收藏吧

目录 1、让任务栏显示“右键菜单” 2、任务栏置顶 3、还原经典右键菜单 4、Win11版任务管理器 5、新版AltTab 6、开始菜单不再卡 7、为Edge浏览器添加云母效果 8、自动切换日/夜模式 Win11在很多地方都做了调整&#xff0c;但由于涉及到诸多旧有习惯&#xff0c;再加上前期Bug的…

2021-02-10

mysql中不等于有两种使用方式 ! 或者<> 推荐使用 <>这种方式

办公技巧:EXCEL10个常用函数介绍

目录 1、MID函数 (left right函数同理&#xff09; 2、CONCATENATE函数 3、AND函数 4、函数名称&#xff1a;DATEDIF 5、IF函数 6、COUNTIF函数 7、SUMIF函数 8、DCOUNT函数 9、ISERROR函数 10、VLOOKUP函数 EXCEL函数太多了&#xff0c;其实常用就是10多个个&#xff0c;只要…

远程工具:MobaXterm使用图文教程

目录 1、下载MobaXterm 2、安装打开MobaXterm 3、建立SSH连接到一台服务器 4、终端服务 5、sftp 文件传输服务 6、上传下载文件 MobaXterm作为一款优秀的远程连接工具&#xff0c;很多朋友在日常当中都会使用到&#xff0c;今天小编给大家介绍一下MobaXterm从下载到安装使用的图…

mysql模糊查询指定根据第几个字符来匹配

mysql模糊查询指定根据第几个字符来匹配 下图案例1中&#xff0c;查询某员工名中第三个字符位e,第五个字符为a的员工名和工资 select last_name,salary FROM employess WHERE last_name LIKE __n_l%; 案例2中&#xff0c;查询员工名中第二个字符为_的员工名,需要转义一下 S…

手机知识:手机快充取决于充电头还是数据线,看完你就懂了

目录 1、充电头方面 2、数据线方面 3、总结 手机是否支持快充主要取决于数据线和充电头是否都支持快充&#xff0c;当然前提是充电头需要和手机具备相同的快充协议&#xff0c;另外数据线可传输的最大电流也会影响手机的快充效果。 1、充电头方面 智能手机充电的过程中&#xf…