TestNg学习

article/2025/9/21 1:30:24

TestNG是一个测试框架,可以简化广泛的测试需求。

  1. 建立工程

首先我们在idea中应该新建一个project,并选择“maven”,点击下一步(如下图)

填写groupId(一般为包名)和ArtifactId(一般为工程名)
在这里插入图片描述
2. 添加依赖

创建成功后:我们需要在pom中添加testng依赖,然后点击自动更新maven

<dependencies><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.9.8</version><scope>test</scope></dependency>
</dependencies>
  1. 代码编写

下面是一个简单的例子:

import org.testng.annotations.Test;
public class Test1 {
@Test
public void test1()
{
System.out.println(“hello testng”);
}
}

  1. 运行结果
    在这里插入图片描述
    输出如下:我们可以看到用TestNG方式执行,输出内容相对全一些,会显示执行了多少个,失败了多少个,通过了多少个

TestNG相关注释

注释

注释介绍

@BeforeSuite在此套件中的所有测试运行之前,将运行带注释的方法。@AfterSuite在此套件中的所有测试运行后,将运行带注释的方法。@BeforeTest在运行属于<test>标记内的类的任何测试方法之前,将运行带注释的方法。@AfterTest在运行了属于<test>标记内的类的所有测试方法之后,将运行带注释的方法。@BeforeClass在调用当前类中的第一个测试方法之前,将运行带注释的方法。@AfterClass在运行当前类中的所有测试方法之后,将运行带注释的方法。@BeforeMethod每次调用@Test方法之前运行,即执行用例之前进行的初始化@AfterMethod每次调用@Test方法之后运行@DataProvider标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@invocationCount
测试用例被调用执行的次数
@threadPoolSize
开启的线程数

TestNG的数据驱动

什么是数据驱动:指的是一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,和每次运行时对应的参数

实现方式:@DataProvider

@DataProvider的简单使用(该注释需要定义属性name):

@Test测试用例,属性dataProvider需要指定对应的数据提供者名称

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;public class Test1 {@DataProvider(name="testcase")public Object[][] dp(){return new Object[][]{{"小红","90"},{"小明","80"}};}@Test(dataProvider = "testcase")public void test1(String n1,String n2){System.out.println(n1 + " " + n2);}
}

这样我们的输出结果如下图:可以看到testcase被执行了2次。
在这里插入图片描述
延迟数据提供者:

延迟初始化指的是:当我们获取了一个数据,对他执行测试方法,然后就废弃这个数据对象,在测试下一个对象。

延迟初始化的思想其实指的是当你真正需要一个对象时才创建它,而不是提前去创建它

实现延迟初始化,TestNg允许我们从数据提供者返回一个Iterator对象,而不是一个二维对象数组。

举个简单的例子:

public interface Iterator<E> {boolean hasNext();E next();
}import java.util.Iterator;public class AccoutIterator implements Iterator{private int index = 0;static private final int MAX = 4;@Overridepublic boolean hasNext() {return index<MAX;}@Overridepublic Object next() {return new Object[]{"Hello!"+(index++)};}public void remove() {throw new UnsupportedOperationException("remove");}
}import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.Iterator;
public class Test1 {@DataProvider(name = "iterator")public Iterator<Object[]> iteratorDataProvider(){return new AccoutIterator();}@Test(dataProvider = "iterator")public void test1(String name){System.out.println(name);}}

看看我们的输出结果:
在这里插入图片描述
忽略测试

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

@Test(enabled = false)
public void test1()
{System.out.println("ignore");
}

依赖测试

如下图,我们test1的运行依赖于test2,所以如果我们只运行test1的话,会先运行依赖的测试用例,在运行自己

import org.testng.annotations.Test;public class Test1 {@Test(dependsOnMethods = {"test2"})public void test1(){System.out.println("我依赖于test2");}@Testpublic void test2(){System.out.println("test2");}
}

运行结果如下图所示:
在这里插入图片描述
TestNG官方文档:https://testng.org/doc/documentation-main.html#parameters-testng-xml
TestNG官方文档推荐一个入门级别的TestNG视频教程:http://www.iqiyi.com/w_19rth5swkd.html


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

相关文章

TestNG教程一:testNG简介

1.TestNG是什么? TestNG是一个测试框架&#xff0c;其灵感来自JUnit和NUnit&#xff0c;但引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更方便。 TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JU…

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…