TestNg JAVA 自动化单元测试框架Demo
TestNg
TestNg 是java的一个自动化单元测试框架
参考:http://testng.org/doc/index.html环境准备
既然是java 的自动化单元测试框架,就必须要有java的环境了,这里使用的编辑器是Eclipse,已经安装过TestNg 插件,如果环境准备好就可以开始了代码实例
代码结构如图
新建一个java项目,之后添加一个TestNg类,之后会生成一个测试类,和一个xml文件
(如果发现TestNg编辑是出错,无法调用TestNg的标签函数,那么导入TestNg.jar.可以右键点击项目,之后BuildPath ->add Libary->选择TestNg 即可)
简单地TestNg类package TestNgDemo;
//使用TestNg 测试框架 import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass; public class NewTest { //测试开始前执行一次
@BeforeClass
public void beforeClass() {
System.out.println("开始前执行一次");
} @Test
public void case1() {
System.out.println("case1");
} @Test
public void case2() {
int a = 2;
int b = 3;
int sum = a+b;
Assert.assertEquals(sum, 5, "Result Error");
System.out.println("case2");
} //测试结束时执行一次
@AfterClass
public void afterClass() {
System.out.println("结束时执行一次");
} }
对应的Xml配置文件(TestNg 都是通过注释标签,有点类似Junit,并且通过xml文件托管):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<test name="Test">
<classes>
<class name="TestNgDemo.NewTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
使用TestNg Xml 进行数据驱动传递参数package TestNgDemo;
//使用TestNg 传递参数 import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod; public class NewTest2 { @BeforeMethod
public void beforeMethod() {
System.out.println("每个方法运行时运行");
} //通过Parameters 获取Xml 中指定的参数
@Parameters({"name","age"})
@Test
public void case1(String name,int age) { System.out.println("case1 Name is"+ name);
System.out.println("case1 Age is"+ age); } @Test
public void case2() { System.out.println("case2");
} @AfterMethod
public void afterMethod() {
System.out.println("每个方法结束时运行");
} }
对应的xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false"> <parameter name="name" value="TestName" />
<parameter name="age" value="55" /> <test name="Test">
<classes>
<class name="TestNgDemo.NewTest2"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
通过xml设置分组,运行不同的casepackage TestNgDemo;
//TestNg 分组运行 import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass; public class NewTest3 { @BeforeMethod
public void beforeMethod() {
System.out.println("Begain");
} @Parameters({"name","age"})
@Test(groups="CaseGroup1")
public void case1(String name,int age) { System.out.println("case1 Name is"+ name);
System.out.println("case1 Age is"+ age); } @Test(groups="CaseGroup2")
public void case2() { System.out.println("case2");
} @AfterMethod
public void afterMethod() {
System.out.println("End");
} }
对应的xml文件如下,需要运行那个组的时候,就可以直接更改:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false"> <parameter name="name" value="TestName" />
<parameter name="age" value="55" /> <test name="Test"> <grroup>
<define name = CaseGroup1/>
<define name = CaseGRoup2/> <run>
<include name = CaseGroup1/>
</run> </grroup>
<classes>
<class name="TestNgDemo.NewTest3"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
TestNg 是通过Xml文件管理测试累的,可以看到,每个测试方法都可以看做一条Case,并且开头都有@Test 作为测试标记
更多的TestNg xml管理的例子可以参考:
http://www.cnblogs.com/choosewang/articles/3079983.html
TestNg 主要的就是通过Xml 托管,注释标签调用
版权声明:本文为博主原创文章,未经博主允许不得转载。
TestNg JAVA 自动化单元测试框架Demo的更多相关文章
- Python Unittest 自动化单元测试框架Demo
python 测试框架(本文只涉及 PyUnit) https://wiki.python.org/moin/PythonTestingToolsTaxonomy 环境准备 首先确定已经安装有Pyth ...
- Keil中搭建自动化单元测试框架Unity
前言: 虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动 ...
- Java - Junit单元测试框架
简介 Junit : http://junit.org/ JUnit是一个开放源代码的Java语言单元测试框架,用于编写和运行可重复的测试. 多数Java的开发环境都已经集成了JUnit作为单元测试的 ...
- Java新一代单元测试框架JUnit5速览
为什么学JUnit5 Java技术栈的单元测试框架有两个:JUnit和TestNG,有种说法是TestNG比JUnit更强大,学TestNG就够了,但是当我打开GitHub看到star的时候,犹豫了: ...
- java自动化-juint框架简述
本人使用的是java的juint框架来组织的自动化测试,故我这边需要简单介绍一下juint框架 首先,建议自行百度一下juint框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...
- java自动化-junit框架简述
本人使用的是java的junit框架来组织的自动化测试,故我这边需要简单介绍一下junit框架 首先,建议自行百度一下junit框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...
- ☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(上)
TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便. 详细使用说明请参考官方链接:https://testng ...
- 基于Grunt&Mocha 搭建Nodejs自动化单元测试框架(含代码覆盖率统计)
Introduction Grunt 是一个基于任务的JavaScript 世界的构建工具 Mocha 是具有丰富特性的 JavaScript 测试框架,可以运行在 Node.js 和浏览器中,使得异 ...
- 在Python中进行自动化单元测试的教程
From: https://www.jb51.net/article/64119.htm 一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必 ...
随机推荐
- jquery的slideUp、slideDown、slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug
jquery的slideUp.slideDown.slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug: 1. 因position引起的问题 影响:IE全系列 症状:在需要sl ...
- 一个RPC的demo
从下面的例子中可以看到,Consumer(client)的代码中引用了Provider部分的class,本例中是 com.provider.EchoServiceImpl和com.provider.E ...
- BIOS和CMOS的联系与区别
BIOS为何物? BIOS就是(Basic Input/Output System,基本输入/输出系统的缩写)在电脑中起到了最基础的而又最重要的作用.是电脑中最基础的而又最重要的程序.把这一段程序放在 ...
- C++标准库类型vector及迭代器iterator简介
Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的.与数组相比,其最大的优点就是动态增长.Vector是一个类模板,并不是数据类型,而vector<int>和 ...
- 【原创】Android 系统稳定性 - ANR(二)
文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任. 很久之前写的了,留着有点浪费,共享之.编写者:李文栋P.S. OpenOffice粘贴过来后格式有些混乱. 1.2 如何分析ANR问题 引 ...
- [转]CentOS_yum的详细使用方法
yum 是什么yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题 yum特点可以 ...
- 一天一个类--ArrayList之一
今天开始打算将JDK7种的一些类的源码分析一下,笔者认为了解源码就是了解其实现过程,这是非常重要的,而不是简单的记住方法的使用,关键是了解其思想和目的这才是重要的.所以笔者决定首先将从一些容器下手.[ ...
- Handler不同线程间的通信
转http://www.iteye.com/problems/69457 Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService),在padService中会启动一个线程( ...
- jQuery格式化时间插件formatDate
一.不传时间 $.formatDate("yyyy-MM-dd HH:mm:ss"); 二.传时间 $.formatDate("yyyy-MM-dd HH:mm:ss ...
- Java网络编程:利用apache的HttpClient包进行http操作
本文介绍如何利用apache的HttpClient包进行http操作,包括get操作和post操作. 一.下面的代码是对HttpClient包的封装,以便于更好的编写应用代码. import java ...