TestNG中的@AfterSuite注释

目录

什么是@AfterSuite annotation?

代码示例

是时候来点头脑风暴了

我们可以在一个类中使用多个@AfterSuite注释方法吗?

@AfterSuite放在超类上时如何工作?


TestNG是Java中广泛使用的测试框架,用于进行单元,功能和集成测试。它包括几个注释,有助于管理测试生命周期和报告结果。@AfterSuite就是这样一个注释的例子,它使您能够在TestNG套件中的所有测试完成后执行特定的操作。

在TestNG中,与@BeforeXXX和@AfterXXX注释相比,@AfterSuite注释具有最低的优先级。

什么是@AfterSuite annotation?

@AfterSuite是TestNG注释套件的一部分,用于在套件中的所有测试运行后执行清理任务。对于关闭数据库连接、删除临时文件和生成测试报告等任务,它是一个有用的注释。@AfterSuite注释仅在套件中的所有测试完成后执行一次。

代码示例

正如我们所知,@AfterSuite注释的执行发生在所有测试执行之后。下面提到的TestNG.xml文件指定了@AfterSuite注释的确切执行点,以便更清楚地说明。

<!-- @BeforeSuite annoated method will execute here  -->
<suite name="codekru"><test name="codekru"><classes><class name="Test.CodekruTestFirst" /><class name="Test.CodekruTestSecond" /></classes></test>
</suite>
<!-- @AfterSuite annoated method will execute here -->

因此,@AfterSuite注释的方法将在suite标记之后执行。

让我们使用两个类(CodekruTestOne和CodekruTestSecond),我们将在CodekruTestSecond类中定义@AfterSuite注释方法。

CodekruTestOne.java

package Test;import org.testng.Assert;
import org.testng.annotations.Test;public class CodekruTestFirst {@Testpublic void test() {System.out.println("Executing the test in CodekruTestFirst class");Assert.assertTrue(true);}}

CodekruTestSecond.java

package Test;import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.Test;public class CodekruTestSecond {@AfterSuitepublic void afterSuite() {System.out.println("In afterSuite method");}@Testpublic void test() {System.out.println("Executing the test in CodekruTestSecond class");Assert.assertTrue(true);}}

现在,我们将运行下面的testng.xml文件,看看会发生什么

<suite name="codekru"><test name="codekru"><classes><class name="Test.CodekruTestSecond" /><class name="Test.CodekruTestFirst" /></classes></test>
</suite>

产出-

Executing the test in CodekruTestSecond class
Executing the test in CodekruTestFirst class
In afterSuite method===============================================
codekru
Total tests run: 2, Failures: 0, Skips: 0
===============================================

我们可以看到afterSuite方法在套件中的所有测试之后运行。

是时候来点头脑风暴了
我们可以在一个类中使用多个@AfterSuite注释方法吗?

答案是肯定的。我们可以在一个类中使用多个@AfterSuite注释的方法,然后所有这些方法都会在该套件中的所有测试之后运行。让我们看一个例子。

package Test;import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.Test;public class CodekruTestSecond {@AfterSuitepublic void afterSuite1() {System.out.println("In afterSuite1 method");}@AfterSuitepublic void afterSuite2() {System.out.println("In afterSuite2 method");}@Testpublic void test() {System.out.println("Executing the test in CodekruTestSecond class");Assert.assertTrue(true);}}

现在运行下面的XML文件。

<suite name="codekru"><test name="codekruTest"><classes><class name="Test.CodekruTestSecond" /></classes></test>
</suite>
<!-- @AfterSuite annoated method will execute here -->

产出-

Executing the test in CodekruTestSecond class
In afterSuite1 method
In afterSuite2 method===============================================
codekru
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
@AfterSuite放在超类上时如何工作?

让我们看一个例子。

package Test;import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.Test;class CodekruTest {@AfterSuitepublic void afterSuiteMethod() {System.out.println("afterSuite method called");}}public class CodekruTestSubclass extends CodekruTest {@Test()public void test() {System.out.println("Executing the subclass test");Assert.assertTrue(true);}}

现在,我们将在testng.xml下面运行,看看会发生什么。

<suite name="codekru"><test name="codekru"><classes><class name="Test.CodekruTestSubclass" /></classes></test>
</suite>

输出-

Executing the subclass test
afterSuite method called===============================================
codekru
Total tests run: 1, Failures: 0, Skips: 0

因此,afterSuiteMethod即使被放置在超类上也可以运行,因为子类继承了所有方法。但是如果我们将afterSuiteMethod设置为私有,afterSuiteMethod方法将不会运行,因为私有方法不能被子类继承。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据开发之Spark(入门)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

CSS实现文本和图片无限滚动动画

Demo图如下&#xff1a; <style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: Poppins, sans-serif;}body {min-height: 100vh;background-color: rgb(11, 11, 11);color: #fff;display: flex;flex-direction: column;justify-content: center;align-i…

Python无人系统

Python无人系统全方位自动坦克在现代军事中具有重要性。以下是几个重要原因&#xff1a; 自动化作战能力&#xff1a;Python无人系统全方位自动坦克能够在没有人类干预的情况下进行作战。它可以通过计算机视觉、传感器和算法来自主地感知环境、分析情报&#xff0c;制定战术和执…

Vision Mamba:将Mamba应用于计算机视觉任务的新模型

Mamba是LLM的一种新架构&#xff0c;与Transformers等传统模型相比&#xff0c;它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域&#xff0c;让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirec…

Kubernetes operator(一)client-go篇【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第一篇&#xff0c;主要对client-go进行学习&#xff0c;从源码阅读角度&#xff0c;学习client-go各个组件的实现原理、如何协同工作等参考视频&#xff1a;Bilibili 2022年最新k…

程序员裁员潮:技术变革下的职业危机

程序员裁员潮&#xff1a;技术变革下的职业危机 一对来自中国的工程师夫妻在美身亡&#xff0c;疑因谷歌裁员致悲剧发生。在技术变革下&#xff0c;裁员对于程序员的影响到底有多大&#xff1f;快来和我们分享一下你的看法吧~ 哎&#xff0c;这是悲哀&#xff0c;让我又想起来…

pod的亲和性和反亲和性

pod的亲和性和反亲和性 调度策略&#xff1a; 匹配标签 操作符 拓扑域 调度目标 node的亲和性 主机标签 In Notin exists doesexists Gt Lt 不支持 指定主机 pod的亲和性 pod的标签 In Notin exists doesexists 支持 pod和指…

【无标题】JavaScript 高阶 Promise篇

1、什么是Promise Promise 是异步编程的一种解决方案&#xff0c;其实是一个构造函数&#xff0c;自己身上有all、reject、resolve这几个方法&#xff0c;原型上有then、catch等方法。&#xff08;ps:关于原型&#xff1a;JavaScript高级 构造函数与原型篇&#xff09; Promi…

什么是 Web3.0

什么是Web3.0 对于 Web3.0 的解释网上有很多&#xff0c;目前来说 Web3.0 是一个趋势&#xff0c;尚未有明确的定义。我们今天讨论下几个核心的点&#xff0c;就能很好的理解 Web3.0 要解决哪些问题 谁创造数据&#xff0c;这里的数据可以是一篇博客&#xff0c;一段视频&…

Oracle Linux 8.9 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

在Vue.js中,什么是mixins?它们的作用是什么?

目录 一、Vue.js介绍 二、什么是mixins 三、mixins的应用场景 四、mixins的优势和作用 一、Vue.js介绍 Vue.js是一种流行的JavaScript前端框架,用于构建交互式的Web界面。它被设计为易于理解和集成的框架,使开发者能够快速构建可复用的组件化应用程序。Vue.js采用了MVVM&a…

如何测试python 版本与 torch 、 torchvision 版本是否对应?

python 版本与 torch 、 torchvision 版本的对应关系如下图所示&#xff1a; 打开 anaconda powershell prompt&#xff0c;输入如下命令&#xff1a; >python>>>import torch>>>c torch.ones((3,1)) //创建矩阵>>>c c.cuda(0) …

云原生周刊:Meshery v0.70 发布 | 2024.1.22

开源项目推荐 flux-cluster-template 该项目用于部署由 Flux、SOPS、GitHub Actions、Renovate、Cilium 等支持的 Kubernetes 集群&#xff0c;专注于使用 GitOps 实践和基础设施自动化。 Kine 该项目可以在 MySQL、Postgres、SQLite、Dqlite 等数据库上运行 Kubernetes&am…

Keepalived + Nginx双主架构

Keepalived Nginx双主架构 环境准备&#xff1a; keepalived_master1服务器nginx&#xff1a;172.20.26.167 keepalived_master2服务器nginx&#xff1a;172.20.26.198 各服务器关闭selinux、防火墙等服务。 开机安装部署nginx 在172.20.26.167服务器上 yum install ngi…

分布式深度学习中的数据并行和模型并行

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略

LLMs之Vanna&#xff1a;Vanna(利用自然语言查询数据库的SQL工具底层基于RAG)的简介、安装、使用方法之详细攻略 目录 Vanna的简介 1、用户界面 2、RAG vs. Fine-Tuning 3、为什么选择Vanna&#xff1f; 4、扩展Vanna Vanna的安装和使用方法 1、安装 2、训练 (1)、使用…

c#中使用UTF-8编码处理多语言文本的有效策略

使用UTF-8编码处理多语言文本的有效策略 在当今的全球化时代&#xff0c;软件开发者常常需要处理包含多种语言的文本。这不仅涉及英文和其他西方语言&#xff0c;还包括中文、日文、韩文等多字节字符系统。在这篇博客中&#xff0c;我将探讨如何有效地使用UTF-8编码来处理混合语…

项目管理认证 | 什么是PMP项目管理?PMP证书有什么用?

01 什么是项目管理&#xff1f; 项目管理&#xff1f;听起来似乎离我们很遥远。其实不然&#xff0c; 学习了项目管理知识后&#xff0c;你会发现&#xff0c;“一切都是项目&#xff0c;一切也将成为项目”。 你可以把港珠澳大桥的建设、开发一款新型手机、开发一个好用的C…

HarmonyOS 发送http网络请求

好 本文 我们来说 http请求 首先 我们要操作网络内容 需要申请权限 项目中找到 main目录下的module.json5 最下面加上 "requestPermissions": [{"name": "ohos.permission.INTERNET"} ]这里 我在本地写了一个get接口 大家可以想办法 弄一个后…

为什么两个向量的内积等于模长乘夹角?

为什么两个向量的内积等于模长乘夹角? 已知两个向量 a = [ a 1 , a 2 ] a=[a_1,a_2] a=[a1​,a2​]和 b = [ b 1 , b 2 ] b=[b_1,b_2] b=[b1​,b2​],他们的内积为 a b = a 1 b 1 + a 2 b 2 ab=a_1b_1+a_2b_2 ab=a1​b1​+a2​b2​,看书上的定义该内积的值是一个标量,并且等…