1. TestNg

    TestNg 是java的一个自动化单元测试框架

    参考:http://testng.org/doc/index.html

  2. 环境准备

    既然是java 的自动化单元测试框架,就必须要有java的环境了,这里使用的编辑器是Eclipse,已经安装过TestNg 插件,如果环境准备好就可以开始了

  3. 代码实例

    代码结构如图

    新建一个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设置分组,运行不同的case

    package 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 -->

  4. TestNg 是通过Xml文件管理测试累的,可以看到,每个测试方法都可以看做一条Case,并且开头都有@Test 作为测试标记

    更多的TestNg xml管理的例子可以参考:

    http://www.cnblogs.com/choosewang/articles/3079983.html

    TestNg 主要的就是通过Xml 托管,注释标签调用

版权声明:本文为博主原创文章,未经博主允许不得转载。

TestNg JAVA 自动化单元测试框架Demo的更多相关文章

  1. Python Unittest 自动化单元测试框架Demo

    python 测试框架(本文只涉及 PyUnit) https://wiki.python.org/moin/PythonTestingToolsTaxonomy 环境准备 首先确定已经安装有Pyth ...

  2. Keil中搭建自动化单元测试框架Unity

    前言: 虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动 ...

  3. Java - Junit单元测试框架

    简介 Junit : http://junit.org/ JUnit是一个开放源代码的Java语言单元测试框架,用于编写和运行可重复的测试. 多数Java的开发环境都已经集成了JUnit作为单元测试的 ...

  4. Java新一代单元测试框架JUnit5速览

    为什么学JUnit5 Java技术栈的单元测试框架有两个:JUnit和TestNG,有种说法是TestNG比JUnit更强大,学TestNG就够了,但是当我打开GitHub看到star的时候,犹豫了: ...

  5. java自动化-juint框架简述

    本人使用的是java的juint框架来组织的自动化测试,故我这边需要简单介绍一下juint框架 首先,建议自行百度一下juint框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...

  6. java自动化-junit框架简述

    本人使用的是java的junit框架来组织的自动化测试,故我这边需要简单介绍一下junit框架 首先,建议自行百度一下junit框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...

  7. ☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(上)

    TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便. 详细使用说明请参考官方链接:https://testng ...

  8. 基于Grunt&Mocha 搭建Nodejs自动化单元测试框架(含代码覆盖率统计)

    Introduction Grunt 是一个基于任务的JavaScript 世界的构建工具 Mocha 是具有丰富特性的 JavaScript 测试框架,可以运行在 Node.js 和浏览器中,使得异 ...

  9. 在Python中进行自动化单元测试的教程

    From: https://www.jb51.net/article/64119.htm 一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必 ...

随机推荐

  1. 【集训笔记】母函数【母函数模板】【HDOJ1028【HDOJ1085

    以下资料摘自 http://www.cnblogs.com/wally/archive/2012/07/13/hdu1028_1085_1171_.html 生成函数是说,构造这么一个多项式函数g(x ...

  2. 基于FPGA的DW8051移植(二)

    基于上一篇博文继续,本来想换到oc8051,但是还是不甘心,弄了这么久还是没有弄出来,真是打击屎了. 上一篇说3f进入了operation code所以判断是代码错误,后来发现不可以这么判断. 因为地 ...

  3. QuartusII 中采用门级原语

    QuartusII  中采用门级原语 默认的是前面第一个 为output  后面所有信号为输入 图中的工程实现的是 一个二选一多路选择器

  4. polling轮询和comet

    comet:(原意:彗星) Comet is a web application model in which a long-held(held:保留) HTTP request allows a w ...

  5. Hibernate JPA 中配置Ehcache二级缓存

    在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...

  6. WebFetch 是无依赖极简网页爬取组件

    WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api ...

  7. (step7.2.3)hdu 2554(N对数的排列问题——简单数论)

    题目大意:输入一个整数n,表示有n对整数.判断能否出现一种情况就是2个1之间有1个数,2个2之间有2个数..... 解题思路: 准备知识: ①n对数,共2*n个数.所以要有2*n个位置来放置这2*n个 ...

  8. [概率dp] ZOJ 3822 Domination

    题意: 给N×M的棋盘.每天随机找一个没放过棋子的格子放一个棋子 问使得每一个每列都有棋子的天数期望 思路: dp[i][j][k] 代表放了i个棋子占了j行k列 到达目标状态的期望 然后从 dp[n ...

  9. python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie

    #coding=utf-8 ''' Created on 2013-7-17 @author: zinan.zhang ''' import re import time import httplib ...

  10. [Boost]boost的时间和日期处理-(2)时间的操作

    <开篇> 本篇紧接着boost上篇叙述Boost::DateTime的时间处理.在C++中,常见的时间有time_t, FILETIME和tm,而boost中用ptime. 构造ptime ...