TestNG教程一:testNG简介

article/2025/9/21 1:27:19

1.TestNG是什么?

  TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。

TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展。它的灵感来源于JUnit。它的目的是优于JUnit,尤其是在用于测试集成多类时。 TestNG的创始人是Cedric Beust(塞德里克·博伊斯特)。

TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义测试,它也可以显示如何使用这个新功能在真实的Java语言生产环境中。

2.TestNG的特点

 ·  注解

·  TestNG使用Java和面向对象的功能

·  支持综合类测试(例如,默认情况下,不用创建一个新的测试每个测试方法的类的实例)

·  独立的编译时测试代码和运行时配置/数据信息

·  灵活的运行时配置

·  主要介绍“测试组”。当编译测试,只要要求TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等

·  支持依赖测试方法,并行测试,负载测试,局部故障

·  灵活的插件API

·  支持多线程测试

3. TestNG实用功能:

TestNG是一个类似Junit的自动化框架,使用它可以做功能,接口,单元,集成的自动化测试;最常见的是结合Selenium做Web功能自动化测试,结合APPIUM做APP自动化测试,同时它是Java开发人员最广泛的测试框架,常使用Java注解去写测试方法,例如,如果你在TestNG写好了一个测试方法,你只需要在这个方法的前面一行写上“@test”,就相当于告诉TestNG, 这个是一个测试方法,只有添加了这个注册,才会被认为是一个测试用例,才会被执行。

4. TestNG配置文件介绍

   4.1 TestNG.xml是TestNG的配置文件,简单来说TestNG就是通过运行这个文件来执行测试用例的,它的主要功能是配置测试用例和测试套件,利用这个文件我们可以跑同一个类或多个不同类的测试用例,具体来说,TestNG通过设置testng.xml文件能做以下事情;

  1)创建来源不同包、类、方法的测试套件

2)包括一些选项,例如失败的用例可以重跑。

3)支持使用正则表达式

4)运行把外部参数传入测试方法

5)支持配置多线程的执行环境

4.2简单TestNG.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Default Suite">

  <test name="Java_Learn">

    <classes>

      <class name="com.java.learn.TestNG_Demo1"/>

    </classes>

  </test>

</suite>

  4.3我们可以看出来,suite管理多个test,而test管理多个class,最小单元是一个class文件,下面就以运行同一个包下的不同测试类和不同包下测试类怎样将其添加到配置文件中;

  <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Default Suite">

  <test name="Java_Learn">

    <classes>

      <class name="com.java.learn.TestNG_Demo1"/> <!-- com.java.learn包下的TestNG_Demo1类 -->

     <!-- 添加不同测试类文件 -->

     <class name="com.java.learn.TestNG_Demo2"/>  <!-- com.java.learn包下的TestNG_Demo2类 -->

     <class name="demo2.TestNG_Demo3"/> <!-- demo2包下的TestNG_Demo3类 -->

    </classes>

  </test> <!-- Java_Learn -->

</suite> <!-- Default Suite -->

5. TestNG的注解

  5.1 @Before和@After 注解

     Before分类有@BeforeSuite,@BeforeTest, @BeforeGroups,@BeforeClass,@BeforeMethod

After分类有@AfterSuite,@ AfterTest, @AfterGroups,@ AfterClass,@ AfterMethod

注:套件测试是什么东西? 套件测试是一起运行的多个测试类。

    5.2@DataProvider注解

标记一个方法是用来给其他测试方法提供数据的方法。要求该方法必须返回是object[][].

5.3@Factory注解

标记这个方法是一个工厂,方法必须返回的是一个对象。

5.4@Listeners注解

在一个测试方法上定义一个监听。例如Selenium自动化测试中需要用到这个事件监听功能,方便我们输出日志。

5.5@Parameters注解

描述了如何给一个测试方法传提参数。

5.6@Test注解

在@Test下有很多选项可以设置,例如用例之间的依赖关系等。

    注:注解是用来执行测试类的配置,如设置、清理数据库,准备虚拟数据、部署、关闭服务器等;

6. TestNG中测试类、测试组和测试方法

   6.1 Test Methods(测试方法)

   凡是方法(或者叫函数)前面添加了@Test注解,就叫测试方法,在实际测试中,写的测试用例,其实就是许多个添加@Test的方法。6.2

6.2 Test Classes(测试类)

   测试类,一般我们新建一个Java类文件,如果里面方法有@Test,那么就是一个测试类文件。上面是写的复数。这个在testng.xml文件里可以体现,classes下可以有一个或者多个测试类文件。Classes相当于就是一个装class的容器,而class又相当于一个装method的容器。

  6.3 Test Groups(测试组)

测试组存在于同一个测试类中,一个组可以包含多个methods。还是可以组嵌套,也是就是一个组可以属于是另外一个组管理,后边会详细讲解TestNG的组测试;

7. TestNG的执行顺序

package com.testngdemo;

import org.testng.annotations.AfterClass;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.AfterSuite;

import org.testng.annotations.AfterTest;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.BeforeSuite;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.Test;

public class NewTest {

    //1个测试方法

    @Test

    public void testCase1() {

       System.out.println("1个测试方法"+"->@Test");

    }

 

    //2个测试方法

    @Test

    public void testCase2() {

       System.out.println("2个测试方法"+"->@Test");

    }

 

    @BeforeMethod

    public void beforeMethod() {

       System.out.println("@beforeMethod");

    }

 

    @AfterMethod

    public void afterMethod() {

       System.out.println("@afterMethod");

    }

 

    @BeforeClass

    public void beforeClass() {

       System.out.println("@beforeClass");

    }

 

    @AfterClass

    public void afterClass() {

       System.out.println("@afterClass");

    }

 

    @BeforeTest

    public void beforeTest() {

       System.out.println("@beforeTest");

    }

 

    @AfterTest

    public void afterTest() {

       System.out.println("@afterTest");

    }

 

    @BeforeSuite

    public void beforeSuite() {

       System.out.println("@beforeSuite");

    }

 

    @AfterSuite

    public void afterSuite() {

       System.out.println("@afterSuite");

    }  

 

}

运行结果如下:


http://chatgpt.dhexx.cn/article/Z7G2kXOp.shtml

相关文章

TestNG用法

【bak】https://www.cnblogs.com/uncleyong/p/15855473.html TestNG简介 单元测试框架&#xff0c;可以用来设计用例的执行流程 创建maven项目&#xff0c;添加依赖 <dependency><groupId>org.testng</groupId><artifactId>testng</artifactId>&…

testNG - 无法访问org.testng.Assert

【异常】无法访问org.testng.Assert 问题表现问题排查问题解决 问题表现 问题排查 报错的是无法访问Assert类&#xff0c;我琢磨着这个类是testNG中很常用的一个类&#xff0c;怎么会找不到&#xff1f; 先从项目的jar包中管理入手&#xff0c;看看有没有其他毛病。 果不其然…

TestNG-学习笔记

https://testng.org/doc/documentation-main.html TestNG概述 TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use, such as: Annotations. Run your tests in arbitrar…

TestNG的使用

testng在maven项目中的使用 pom.xml <dependencies><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>7.4.0</version><scope>test</scope></dependency> </depend…

TestNG

1 TestNG简介 TestNG是Java中的一个测试框架&#xff0c;是一个目前很流行实用的单元测试框架&#xff0c;有完善的用例管理模块&#xff0c;配合Maven能够很方便管理依赖第三方插件。 TestNG消除了大部分的旧框架的限制&#xff0c;使开发人员能够编写更加灵活和强大的测试。…

TestNG自动化测试框架详解

TestNG 文章目录 TestNG一、概述与使用1.1 配置环境1.2 测试方法1.3 使用xml文件 二、测试方法常用注解2.1 配置类注解2.2 非配置类注解2.2.1 Parameters2.2.2 DataProvider 三、依赖测试四、忽略测试五、超时测试六、分组测试七、失败重试机制7.1 IRetryAnalyzer接口7.2 测试方…

TestNG整理

1 基本概念 TestNG:即Testing, Next Generation,下一代测试技术,是根据JUnit和NUnit思想,采用jdk的annotation技术来强化测试功能并借助XML 文件强化测试组织结构而构建的测试框架。最新版本5.12,Eclipse插件最新版本:testng-eclipse-5.12.0.6 TestNG的应用范围: 单…

TestNG使用教程详解

一、TestNG介绍 TestNG是Java中的一个测试框架&#xff0c; 类似于JUnit 和NUnit, 功能都差不多&#xff0c; 只是功能更加强大&#xff0c;使用也更方便。 详细使用说明请参考官方链接&#xff1a;TestNG - Welcome WIKI教程&#xff1a;TestNG - 小组测试( Group Test)_学习…

TestNG单元测试框架详解

目录 前言 ​1. TestNG使用流程 1.1TestNG安装 1.2 创建Maven项目 1.3 Maven配置 1.4 项目TestNG测试类 1.5 运行TestNG 2、TestNG常用注解 3.xml方式运行 3.1 鼠标右击testng.xml运行 3.1 使用maven运行 4. 常用的断言&#xff08;assert&#xff09; 5. TestNG预…

使用ZRender类库画直线、圆弧、曲线以及点在线上的运动

最近在学习Zrender类库&#xff0c;并利用Zrender 让点在直线、圆弧、曲线上运动。大概的写了一些. Zrender是二维绘图引擎&#xff0c;它提供 Canvas、SVG、VML 等多种渲染方式。ZRender 也是 ECharts 的渲染器. 这里我运用的是Canvas画布去画的.想了解Zrender内的属性&…

js画图插件-zrender

zrender&#xff08;Zlevel Render&#xff09; 是一个轻量级的Canvas类库&#xff0c;MVC封装&#xff0c;数据驱动&#xff0c;提供类Dom事件模型&#xff0c;让canvas绘图大不同&#xff01; MVC核心封装实现图形仓库、视图渲染和交互控制&#xff1a; Stroage(M) : shape数…

ZRender文档研读

ZRender文档研读 (基于4.3.2版本) 不使用最新的5.x.x的版本是因为线上文档和最新版本JS文件不匹配-2022年6月13日 1、文档地址 1、官方文档的地址&#xff1a;https://ecomfe.github.io/zrender-doc/public/api.html#zrenderdisplayable 2、Github地址&#xff1a;https://git…

React Developer Tools 下载

React Developer Tools 下载 方法一&#xff1a;网页扩展工具 搜索 React Developer Tools 下载&#xff08;若浏览器不支持搜索React &#xff0c;行不通&#xff09; 打开chrome 浏览器 (只有 chrome 支持 React Developer Tools&#xff09;点击网页工具栏 右上方 确认添…

zrender TypeError: “x“ is not a constructor

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;耶瞳空间 我是调用zrender的init方法报错&#xff0c;如下图&#xff1a; 然后经过大佬指点&#xff0c;这种开发环境没问题但生产环境报错的东西&#xff0c;一般是因为打包的时候被tree-shaking…

vue+zrender实现医院体温单

项目背景 医院医护项目需求&#xff0c;需要用H5做一个通用的体温单 项目演示 版本一 版本二 项目代码简介 由vue-cli4脚手架快速搭建生成&#xff0c;主要代码都在thermometer.vue文件里面&#xff0c;后续修改也主要是在这个文件修改。 项目需求难点在中间的网格部分…

ZRender开发

ZRender开发 开发文档&#xff1a;https://ecomfe.github.io/zrender-doc/public/ <!-- eslint-disable no-undef --> <template><div class"config-page"><div class"header"><el-button click"handleAdd">撒…

Echarts 源码解读 一:zrender源码分析1var zr = zrender.init(document.getElementById(‘main‘));

2021SCSDUSC 因为Echarts是基于zrender进行实现的&#xff0c;所以解读echarts源码前&#xff0c;首先要对zrender有基本的了解。 zrender是canvas的一个类库&#xff0c;zrender是基于canvas实现的。 目录 zrender的src文件夹 文件夹&#xff1a; animation动画相关 cont…

高效canvas绘图框架——zrender

一个轻量级的Canvas类库&#xff0c;MVC封装&#xff0c;数据驱动&#xff0c;提供类Dom事件模型&#xff0c;让canvas绘图大不同 Architecture MVC核心封装实现图形仓库、视图渲染和交互控制&#xff1a; Stroage(M) : shape数据CURD管理Painter(V) : canvase元素生命周期管理…

轻量级的Canvas类库zrender使用笔记 :简单自定义图件开发

ECharts&#xff0c;一个纯 Javascript 的图表库&#xff0c;底层依赖轻量级的 Canvas 类库 ZRender&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可高度个性化定制的数据可视化图表。当然我们自己可能有些需求&#xff0c;通过修改ECharts或者highchar…

vue-echarts的ZRender事件

首先贴出 vue-echarts 的官网连接&#xff1a;https://www.npmjs.com/package/vue-echarts 1、vue-echarts 具体在vue中的使用方法&#xff0c;本文中就暂时不多介绍了&#xff1b; 2、如何在vue中使用vue-echarts的鼠标事件&#xff1a; 具体使用方式跟vue中使用echarts一样&a…