TestNG教程二:testNG常用测试类型

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

1.异常测试

package com.testngdemo;

import org.testng.annotations.Test;

public class test {

  @Test(expectedExceptions = ArithmeticException.class )

  public void divisionWithException() {

      int i = 1 / 0;

      System.out.println("After division the value of i is :"+ i);

  }

}

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

    <classes>

       <class name="com.testngdemo.test"/>

    </classes>

  </test>

</suite>

运行结果:

2.忽略测试

package com.testngdemo;

import org.testng.annotations.Test;

public class test {

  @Test

  public void test1() {

      System.out.println("这是第一个测试用例");

  }

  @Test(enabled = false )

  public void test2(){

      System.out.println("这是第二个测试用例");

  }

}

testng.xml配置和异常测试一样;

运行结果:

3.超时测试

package com.testngdemo;

import org.testng.annotations.Test;

public class test {

  @Test

  public void test1() {

      System.out.println("这是第一个测试用例");

  }

  @Test(timeOut = 2000 )

  public void test2()throws Exception{

      Thread.sleep(3000);

      System.out.println("这是第二个测试用例");

  }

}

testng.xml配置和异常测试一样;

运行结果:

4.优先级测试

使用@Test的priority属性可支持设置用例的优先级。如果不带这个属性,默认priority是等于0,而且priority值越小,优先级越高;

package com.testngdemo;

import org.testng.annotations.Test;

public class test {

    public class TestNG_Demo2 {

        

        @Test(priority = 2)

        public void test1(){

            System.out.println("test1");

        }     

        @Test(priority = 4)

        public void test2(){

            System.out.println("test2");

        }

        @Test(priority = 1)

        public void test3(){

            System.out.println("test3");

        }     

        @Test

        public void test4(){

            System.out.println("test4");

        }

    }

}

testng.xml配置和异常测试一样;

运行结果:

5.分组测试

package com.testngdemo;

import org.testng.annotations.Test;

public class test {

    public class TestNG_Demo2 {

       @Test(groups = {"Fucntion","API"})

        public void test01(){

            System.out.println("API Testing and Function testing");

        }    

        @Test(groups = {"API"})

        public void test02(){

            System.out.println("API Testing");

        }  

        @Test(groups = {"Fucntion"})

        public void test03(){

            System.out.println("Function testing");

        }     

        @Test

        public void test04(){

            System.out.println("not in API and Function testing");

        }

    }

}

通过testng.xml配置只测试包含API的分组:

<?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="API "/>

       </run>

    </groups>

    <classes>

       <class name="com.testngdemo.test"/>

    </classes>

  </test>

</suite>

运行结果如下:

通过testng.xml配置只测试API和Fucntion的分组:

<?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="API "/>

           <include name="Fucntion "/>

       </run>

    </groups>

    <classes>

       <class name="com.testngdemo.test"/>

    </classes>

  </test>

</suite>

运行结果如下:

通过testng.xml配置测试不含API和Fucntion的分组:

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

           <exclude name="API"/>

           <exclude name="Fucntion"/>

       </run>

    </groups>

    <classes>

       <class name="com.testngdemo.test"/>

    </classes>

  </test>

</suite>

运行结果:

通过testng.xml配置通过自定义分组管理API和Fucntion的分组:

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

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

<suite name="Suite1">

  <test name="test1">

     <groups>

         <define name="all">

           <include name="API"/>

           <include name="Fucntion"/>

         </define>

         <run>

           <include name="all"/>

        </run>

    </groups>

    <classes>

       <class name="com.testngdemo.test"/>

    </classes>

  </test>

</suite>

运行结果:

6.依赖测试

  硬依赖:所有的依赖方法必须成功执行,才会执行接下来的方法,如果其中有一个依赖的方法失败了,那么接下来的方法是不会被执行,会默认标记跳过(skip)。

package com.testngdemo;

import org.testng.annotations.Test;

public class test {

    public class TestNG_Demo2 {

       @Test(dependsOnMethods = "tomcatServiceIsDown")

        public void restartTomcatService(){

            System.out.println("Restart the tomcat server when it is down!");

        }

        @Test

        public void tomcatServiceIsDown(){

            System.out.println("tomcat service is down!");

        }

    }

}

软依赖:不管依赖的方法是否成功执行,接下来的方法都可以运行。软依赖的实现是在@Test中添加属性alwaysRun=true来实现。

package com.testngdemo;

import org.testng.Assert;

import org.testng.annotations.Test;

public class test {

    public class TestNG_Demo2 {

       @Test(groups = {"tomcat"})

        public void restartTomcatService(){

            System.out.println("Restart the tomcat server when it is down!");

        }

        @Test(groups = {"tomcat"})

        public void tomcatServiceIsDown(){

            System.out.println("tomcat service is down!");

            Assert.assertTrue(10==11);

        }    

        @Test(dependsOnGroups = {"tomcat"}, alwaysRun = true)

        public void startAppServer(){

            System.out.println("Start App service");

        }

    }

}

通过testng.xml配置依赖暂忽略;

7.附@Test注解相关属性

编号

属性名称

属性作用

备注

1

alwaysRun

如果设置为true,则此测试方法将始终运行,即使它取决于失败的方法。

 

2

dataProvider

该测试方法的数据提供者的名称。

 

3

dataProviderClass

在哪里寻找数据提供者的类。

 

4

dependsOnGroups

此方法所依赖的组列表。

 

5

dependsOnMethods

此方法所依赖的方法列表。

 

6

description

此方法的说明。

 

7

enabled

是否启用了此类/方法上的方法。

 

8

expectedExceptions

预期测试方法将引发的异常列表。

 

9

expectedExceptionsMessageRegExp

如果指定了ExpectedExceptions,则其消息必须与在此属性中指定的正则表达式匹配。

 

10

groups

此类/方法所属的组的列表。

 

11

ignoreMissingDependencies

如果设置为true,则即使缺少或排除了它依赖的方法,该测试也将运行。

 

12

invocationCount

应该调用此方法的次数。

 

13

invocationTimeOut

此测试方法的调用总数应采用的最大毫秒数。

 

14

parameters

不推荐使用

建议使用Use @Parameters

15

priority

调度优先级。

 

16

retryAnalyzer

如果应重试测试,应调用该类的名称以进行测试。

 

17

sequential

不推荐使用

建议使用单线程

18

singleThreaded

如果设置为true,则即使当前正在使用parallel =“ true”运行测试,也保证该测试类上的所有方法都可以在同一线程中运行。

 

19

skipFailedInvocations

如果将true和invocationCount指定为为1,则失败后的所有调用都将被标记为SKIP而不是FAIL。

 

20

successPercentage

此方法预期成功的百分比。

 

21

suiteName

该测试类应放入的套件名称。

 

22

testName

应该放置该测试类的测试的名称

 

23

threadPoolSize

此方法的线程池的大小。

 

24

timeOut

此测试应花费的最大毫秒数。

 

 


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

相关文章

TestNg学习

TestNG是一个测试框架&#xff0c;可以简化广泛的测试需求。 建立工程 首先我们在idea中应该新建一个project&#xff0c;并选择“maven”&#xff0c;点击下一步&#xff08;如下图&#xff09; 填写groupId&#xff08;一般为包名&#xff09;和ArtifactId&#xff08;一般…

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元素生命周期管理…