@Test Annotation属性- alwaysRun属性

@Test注释有许多属性,alwaysRun就是其中之一。在这篇文章中,我们将详细讨论alwaysRun属性。

alwaysRun属性的用途是什么?这个属性有什么作用?嗯,根据测试文件。

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

困惑?别担心我们会帮你的。

让我们尝试运行一个依赖于另一个测试方法(dependsOnThis,也在下面显示)的测试用例(testMethod,如下所示),而不使用alwaysRun属性,看看会发生什么。这里我们将使dependsOnThis测试用例失败。

import org.testng.Assert;
import org.testng.annotations.Test;public class CodekruTest {@Testpublic void dependsOnThis() {Assert.assertTrue(false); // failing the test}@Test(dependsOnMethods = { "dependsOnThis" })public void testMethod() {System.out.println("testMethod is passed"); // this line will never be printed}}

产出-


FAILED: dependsOnThis
java.lang.AssertionError: expected [true] but found [false]at org.testng.Assert.fail(Assert.java:96)at org.testng.Assert.failNotEquals(Assert.java:776)at org.testng.Assert.assertTrue(Assert.java:44)at org.testng.Assert.assertTrue(Assert.java:54)at Test.CodekruTest.dependsOnThis(CodekruTest.java:10)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:564)at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)at org.testng.TestRunner.privateRun(TestRunner.java:648)at org.testng.TestRunner.run(TestRunner.java:505)at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)at org.testng.SuiteRunner.run(SuiteRunner.java:364)at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)at org.testng.TestNG.runSuites(TestNG.java:1049)at org.testng.TestNG.run(TestNG.java:1017)at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)SKIPPED: testMethod
java.lang.Throwable: Method CodekruTest.testMethod()[pri:0, instance:Test.CodekruTest@404bbcbd] depends on not successfully finished methodsat org.testng.internal.Invoker.invokeTestMethods(Invoker.java:888)at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)at org.testng.TestRunner.privateRun(TestRunner.java:648)at org.testng.TestRunner.run(TestRunner.java:505)at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)at org.testng.SuiteRunner.run(SuiteRunner.java:364)at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)at org.testng.TestNG.runSuites(TestNG.java:1049)at org.testng.TestNG.run(TestNG.java:1017)at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)===============================================Default testTests run: 2, Failures: 1, Skips: 1
==============================================================================================
Default suite
Total tests run: 2, Failures: 1, Skips: 1
===============================================

我们在运行testMethod后得到了上面的输出,因为我们可以看到testMethod()没有被执行,因为它的依赖方法(dependsOnThis)失败了。

现在,让我们尝试相同的代码,但我们将使用alwaysRun属性,看看会发生什么。

import org.testng.Assert;
import org.testng.annotations.Test;public class CodekruTest {@Testpublic void dependsOnThis() {Assert.assertTrue(false); // failing the test}@Test(alwaysRun = true, dependsOnMethods = { "dependsOnThis" })public void testMethod() {System.out.println("testMethod is passed"); // now, this will be printed}}

产出-

testMethod is passed
PASSED: testMethod
FAILED: dependsOnThis
java.lang.AssertionError: expected [true] but found [false]at org.testng.Assert.fail(Assert.java:96)at org.testng.Assert.failNotEquals(Assert.java:776)at org.testng.Assert.assertTrue(Assert.java:44)at org.testng.Assert.assertTrue(Assert.java:54)at Test.CodekruTest.dependsOnThis(CodekruTest.java:10)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:564)at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)at org.testng.TestRunner.privateRun(TestRunner.java:648)at org.testng.TestRunner.run(TestRunner.java:505)at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)at org.testng.SuiteRunner.run(SuiteRunner.java:364)at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)at org.testng.TestNG.runSuites(TestNG.java:1049)at org.testng.TestNG.run(TestNG.java:1017)at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)===============================================Default testTests run: 2, Failures: 1, Skips: 0
==============================================================================================
Default suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================

在这里,您可以看到,尽管dependsOnThis失败,testMethod测试仍然运行,与前面一样。这就是alwaysRun属性的功能。

我们有一个问题:每当我们在@Test注释中使用alwaysRun属性时,是否有必要传递dependsOnMethods或dependsOnGroups属性?

答案是肯定的,alwaysRun只有在我们传递了dependsOnMethodsdependsOnGroups属性的情况下才能工作。如果alwaysRun是在没有dependsOnMethods或dependsOnGroups属性的情况下编写的,它将被忽略因此,最好将其与dependsOnMethods或dependsOnGroups一起使用。

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

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

相关文章

普通人怎么做Temu跨境电商项目?这几点要了解

随着全球电商市场的蓬勃发展,越来越多的人开始关注跨境电商领域。Temu作为拼多多旗下的跨境电商平台,以其独特的商业模式和强大的供应链能力吸引了众多普通人的关注。那么,作为一个普通人,如何才能做好Temu跨境电商项目呢?接下来…

docker: missing signature key

问题描述 下载某些docker镜像时,可能会报missing signature key错误。 原因分析 docker推出了新的镜像构建工具,比较老版本的docker不能识别这种格式。用阿里云镜像源安装的docker版本是1.13.1,这个版本是2017年发布的,需要升级…

ChatGPT可与自定义GPTs一起使用,智能AI代理时代来啦!

1月31日凌晨,OpenAI在社交平台公布了一个超强新功能,可以在ChatGPT中输入“GPTs名字”的方法,调用多个自定义GPTs一起协同工作。 例如,我想开发一款社交APP,1)可以先用专业分析GPTs做一下市场调研&#xf…

小猪o2o生活通系统更新到了v24.1版本了php文件开源了提供VUE了但是车牌识别功能你真得会用吗

一.车牌识别设置项 车牌识别设置项总开关:系统后台-社区管理-社区配置-车牌识别配置。 平台需要开启车牌识别功能,其次平台可以选择车牌识别功能是由平台配置还是小区自己配置有需要提供代码的可以Q我昵称注明:CSDN网友。如果是平台自己配置&…

部署PXE高效批量网络装机

部署PXE高效批量网络装机 因在Cisco3850核心交换机中已开启DHCP 服务,因此不需要在配置DHCP服务。如果您的网络环境中也已有DHCP服务,也不用再配置DHCP服务了,直接部署PXE相关服务即可。 找一台linux系统的服务器,这本次试验用的是…

溯源取证-iphone取证-高难度篇

摘要: 本次内容主要讲解iphone8取证,算是年前最后一篇了,大家将就着看哈 本次使用的工具: ileappGUI.exe github一款开源且免费的移动介质取证工具 Magnet Axiom Cyber 一款付费的移动介质取证工具 DB.Browser.for.SQLite-3.12…

定制CRM客户关系管理软件的八个步骤

CRM发展要求周到的准备步骤由于丰富的功能,需要加以实施。因此,让我们仔细看看如何设计一个CRM,以获得最大的成功。 步骤1.设立目标 任何过程开始规划。之前建立一个客户关系管理,这是至关重要的写下的业务目标和确定什么样的挑战…

UnityShader(十)实现标准光照模型中的漫反射光照

基本光照模型中漫反射计算公式: 从公式可以看出,要计算漫反射需要知道四个参数:入射光线的颜色和强度clight,材质的漫反射系数mdiffuse,表面的法线n和光源方向I。 为了防止点积的结果为负数,需要使用max操…

速卖通半托管优缺点是什么?速卖通半托管和全托管的区别是什么?速卖通半托管怎么发货?

1月5日,阿里速卖通AliExpress正式向全体卖家推出半托管模式,并且官方连续发放多重补贴,重金加码半托管模式,推广力度非常大。 关于速卖通半托管服务春节补贴政策 图源:阿里巴巴全球速卖通官方 由此可见,半…

一种手机短信验证码登录平台的解决方案

前提 爬取数据时,请求需要带上Cookie,这是很常见的一种防爬手段。更新Cookie,常用的方法就是Selenium模拟输入用户名和密码;偶尔会遇到图片验证码,现在打码平台很多且技术也很成熟,这个已经不成问题。所谓…

使用Postman做API自动化测试

Postman最基本的功能用来重放请求,并且配合良好的response格式化工具。 高级点的用法可以使用Postman生成各个语言的脚本,还可以抓包,认证,传输文件。 仅仅做到这些还不能够满足一个系统的开发,或者说过于琐碎&#…

java代码中调用自定义函数

定义函数 CREATE DEFINERrootlocalhost FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS float BEGINDECLARE SUM FLOAT DEFAULT 0;SET SUMnum1num2;RETURN SUM; END <select id"cunchu" resultType"java.util.Map">SELECT test_fun1(1,2) as r…

动态口令【leetcode】

本题选自leetcode图解算法数据结构一书 某公司门禁密码使用动态口令技术。初始密码为字符串 password&#xff0c;密码更新均遵循以下步骤&#xff1a; 设定一个正整数目标值 target 将 password 前 target 个字符按原顺序移动至字符串末尾 请返回更新后的密码字符串。 示例 …

海外短剧系统国际短剧源码h5多语言版app挂载tiktok油管ins

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目 前言 一、海外短剧系统是什么&#xff1f; 二、海外短剧系统功能与运营方式介绍 1.系统功能 2.短剧APP运营方式 总结 前言 本文简单介绍海外短剧系统的功能&#xff…

Java项目:基于SSM框架实现的家纺用品销售管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm814基于SSM框架实现的家纺用品销售管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试…

langchain+xray:prompt控制漏洞扫描

写在前面 xray是长亭推出的一款漏洞扫描工具。 langchain是调用LLM大模型完成自动化任务的框架。 本篇文章是对langchain自定义工具的探索&#xff0c;通过编写一个xray调用的工具&#xff0c;联合ChatGPT对xray进行调用&#xff0c;实现对目标的漏洞扫描。 xray功能分析 …

3 款最好的电脑硬盘数据迁移软件

您将从本页了解 3 款最好的 SSD硬盘数据迁移软件&#xff0c;磁盘供应商提供的软件和可靠的第三方软件。仔细阅读本文并做出您的选择。 什么是数据迁移&#xff1f; 数据迁移是将数据移动到其他计算机或存储设备的过程。在日常工作活动中&#xff0c;常见的数据迁移有三种&…

应用宝 <危害支付安全>

游戏未收到任何通知被应用宝下架&#xff0c;问了客服 客服&#xff1a;应用危害支付安全&#xff0c; 我&#xff1a;什么是危害支付安全&#xff0c; 客服&#xff1a;存在非腾讯的支付方式 我&#xff1a;应用没有非腾讯的支付方式&#xff0c;都是用的米大师支付 过去很久。…

KAFKA节点故障的容错方案

KAFKA节点故障的容错方案 1. broker启动加载逻辑1.1 日志组成和分析1.2 snapshot文件1.3 broker启动流程1.4 LogManager的初始化和启动过程 2. controller高可用1.1 选主逻辑1.2 HA切换1.3 controller的职责 3. partition高可用3.1 ISR列表3.1 选举Leader 4. 疑问和思考4.1 如果…

mysql优化之语句调优

SQL优化技巧 使用group by 分组查询是&#xff0c;默认分组后&#xff0c;还会排序&#xff0c;可能会降低速度&#xff0c;在group by 后面增加 order by null 就可以防止排序.有些情况下&#xff0c;可以使用连接来替代子查询。因为使用join&#xff0c;MySQL不需要在内存中…