JUnit 5中的测试执行顺序

一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果。 但是在某些情况下,可以证明特定的测试执行顺序是正确的,尤其是在集成或端到端测试中。

默认情况下,在JUnit 5中,测试方法的执行在构建之间是可重复的,因此是确定性的,但是该算法是故意不明显的(作为库状态的作者)。 幸运的是,可以使用内置方法定购器或通过创建自定义定购器来调整执行顺序以适应我们的需求。

org.junit.jupiter.api.TestMethodOrder

为了更改测试执行顺序,我们需要使用org.junit.jupiter.api.TestMethodOrder注释测试类,并将方法排序器的类型作为参数传递。 从JUnit 5.4开始,有三个内置的方法排序器: OrderAnnotationAlphanumericRandom 。 通过实现org.junit.jupiter.api.MethodOrderer接口,我们还可以轻松创建自己的自定义方法org.junit.jupiter.api.MethodOrderer器。

使用

 package pl.codeleak.samples.junit5.basics;  import org.junit.jupiter.api.MethodOrderer;  import org.junit.jupiter.api.Order;  import org.junit.jupiter.api.Test;  import org.junit.jupiter.api.TestMethodOrder;  @TestMethodOrder (MethodOrderer.OrderAnnotation. class )  class TestExecutionOrderWithOrderAnnotation { @Order ( 1 ) @Test void aTest() {} @Order ( 2 ) @Test void bTest() {} @Order ( 3 ) @Test void cTest() {}  } 

字母数字顺序

 @TestMethodOrder (MethodOrderer.Alphanumeric. class )  class AlphanumericTestExecutionOrder { @Test void aTest() {} @Test void bTest() {} @Test void cTest() {}  } 

随机排序

如果要确保生成之间的方法执行顺序不确定,则随机排序可能很有用。

 @TestMethodOrder (MethodOrderer.Random. class )  class AlphanumericTestExecutionOrder { @Test void aTest() {} @Test void bTest() {} @Test void cTest() {}  } 

随机方法订购者使用System.nanoTime()作为种子,但是可以使用junit.jupiter.execution.order.random.seed配置属性对其进行更改。 此属性的值应返回可以使用Long.valueOf(String)进行转换的任何String

配置种子的一种方法是在junit-platform.properties配置文件中提供配置属性:

 junit.jupiter.execution.order.random.seed= 42 

定制订购

可以通过实现org.junit.jupiter.api.MethodOrderer接口并将其作为@TestMethodOrder的参数来创建自定义方法@TestMethodOrder

下面的示例是一个方法排序器,它按名称的长度对方法进行排序:

 class MethodLengthOrderer implements MethodOrderer { private Comparator<MethodDescriptor> comparator = Comparator.comparingInt(methodDescriptor -> methodDescriptor.getMethod().getName().length()); @Override public void orderMethods(MethodOrdererContext context) { context.getMethodDescriptors().sort(comparator); }  } 

并使用:

 @TestMethodOrder (MethodLengthOrderer. class )  class CustomTestExecutionOrder { @Test void aTest() {} @Test void abTest() {} @Test void abcTest() {}  } 

摘要

在某些情况下,有一种在JUnit 5中调整测试执行顺序的方法会很有用,我很高兴看到此功能。 我相信在大多数情况下,内置方法订购者将绰绰有余。 如果没有,那么有一种实现自定义方法的简便方法。

在GitHub上找到本文中使用的示例(以及更多): https : //github.com/kolorobot/junit5-samples/tree/master/junit5-basics

翻译自: https://www.javacodegeeks.com/2019/03/test-execution-order-junit-5.html

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

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

相关文章

HDMI光端机常见故障和解决方法大全

HDMI光端机&#xff0c;HDMI光纤延长器&#xff0c;由发射机和接收机组成&#xff0c;是光纤传输HDMI高清音视频的完美解决方案&#xff0c;能通过单芯单模或多模光纤把HDMI高清音视频、红外遥控功能传输到远端。在广泛领域应用中&#xff0c;往往需要把HDMI信号源输送远处进行…

linux alsa 音频管理,在Linux上的高级音频控制

Linux音频控制与Linux音频系统结构一样混乱。 长篇小说&#xff0c;经过多年的发展&#xff0c;默认的声音控制工具看起来像这样&#xff1a;设置音量级别的默认和唯一选项可能对于大多数用户来说是足够的&#xff0c;但是当您想要设置特定音频级别或为不同音频源定义各自的设置…

物联网未来发展的十大趋势

根据IoTAnalytics的预测&#xff0c;到2020年&#xff0c;全球活跃的物联网设备数量预计将达到100亿台&#xff0c;到2025年或将达到220亿台&#xff1b;另外根据EnterpriseCIO的预测&#xff0c;到2020年&#xff0c;物联网的市场规模将增长到4570亿美元&#xff0c;年复合增长…

一分钟了解:物联网在医疗领域的应用(视频)

【科普】医疗物联网应用给我们带来了哪些改变&#xff0c;智慧医疗都有哪些&#xff1f;医疗物联网是指在标准和交互通信协议的基础上&#xff0c;通过利用射频识别技术、传感器技术以及定位技术等&#xff0c;进一步结合先进的通信网络设备、移动终端设备等对医疗对象进行处理…

java 基础包的功能_Java 8的功能基础

java 基础包的功能Java 8彻底改变了Java。 它很可能是过去10年中最重要的Java版本。 有很多新功能&#xff0c;包括默认方法&#xff0c;方法和构造函数引用以及lambda&#xff0c; 仅举几例 。 更有趣的功能之一是新的java.util.stream API&#xff0c;正如Javadoc所述&#…

PDH光端机的原理_PDH光端机的作用优点

随着通信技术的不断发展&#xff0c;自从有了PDH光端机这个新的设备&#xff0c;在信息的传输方面真的便利了我们很多&#xff0c;不过&#xff0c;对于这个新的装备PDH光端机&#xff0c;估计大多数小伙伴都不太了解吧&#xff0c;那么为了让大家跟上时代的步伐&#xff0c;接…

linux usb声卡 submit urb,linux usb urb详解

linux usb urb详解谨以此文纪念过往的岁月一.前言在前文中看过了hub的驱动以及host的驱动还有usb设备的驱动&#xff0c;在把这些东西关联起来的东东中&#xff0c;一个很重要的urb(usb request blk)&#xff0c;在本文中会详细来看urb的实现&#xff0c;以及具体的应用。二.Ur…

新一代蓝牙对工业物联网(IIOT)的应用

蓝牙是一种收到市场广大认可的一种无线通信技术&#xff0c;并且得益于Mesh组网、低功耗和传输速度快等方面的优势&#xff0c;蓝牙在工业物联网中也起着极为重要的地位。 此外市场上的无线连接技术有着很多的种类&#xff0c;每项技术都这其优缺点和使用环境&#xff0c;包括w…

【渝粤教育】国家开放大学2019年春季 8042-22T养殖业基础 参考试题

科目编号&#xff1a;[8042] 座位号 2018-2019学年度第二学期期末考试 养殖业基础 试题 2019年 5月 一、名词解释&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 1.必需氨基酸 2&#xff0e;嗳气 3&#xff0e;质量性状 4.人工授精 5.负…

LoRa通信技术和其优势

LoRa 是LPWAN通信技术中的一种&#xff0c;是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案的出现改变了以往关于传输距离和功耗需要折中的考虑方式&#xff0c;为用户提供了一种简单的能实现远距离通信、电池寿命长、大容量的系统&#xff0c…

【渝粤教育】电大中专常用电器与PLC控制 (2)作业 题库

1.三相笼型异步电动机的电气控制线路中&#xff0c;如果使用热继电器作过载保护&#xff0c;就不必再装设熔断器作短路保护。 A.正确 B.错误 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.交流接触器通电后如果铁心吸合受阻&#xff0c;将导致圈烧毁。 A.正确 B…

Linux下读取smBIOS源码,Linux下读取SMBIOS信息

来源&#xff1a;http://www.linuxde.net/2013/02/12499.htmluefi shell下使用smbiosviewlinux下使用dmidecode 或者amidecode(amidecode貌似只支持服务器端AMI平台产品)使用方法 dmidecode -t type_numtype_num表规范如下&#xff1a;SMBIOS specification 2.7.1 中定义了如下…

E95-DTU(4G01-485)数传电台的特点及其应用详解

1、E95-DTU(4G01-485简介 E95-DTU(4G01-485)是采用 4G CAT1 方案的云数传电台&#xff0c;电台支持微信小程序简单配对使用。可以显现一对一、一对多、多对多等复杂应用场景。由于采用了云技术&#xff0c;数传电台相互透传的距离不受限制。 云数传电台作为一种突破性的数传产…

【渝粤题库】陕西师范大学300003 世界史 (上)

《世界史 (上)》作业 一、名词解释 1&#xff0e;氏族 2&#xff0e;《吉尔伽美什史诗》 3&#xff0e;“空中花园” 4&#xff0e;邪马台国  5&#xff0e;托马斯阿奎那 6&#xff0e;图腾崇拜 7&#xff0e;贝希斯敦铭文 8&#xff0e;荷马史诗 9&#xff0e;《罗马民法大全…

SDH光端机概述与技术应用详解

SDH技术自从90年代引入以来&#xff0c;至今已经是一种成熟、标准的技术&#xff0c;在骨干网中被广泛采用&#xff0c;且价格越来越低。SDH光端机可广泛应用于电信数据业务、电力、银行、公安、部队等部门公用电话网接入或专线信息传输。接下来飞畅科技的小编将来为大家详细讲…

物联网技术在智慧校园中的应用

虽然很多人可能会不注意&#xff0c;但是物联网技术已经很普遍的应用在了我们的生活当中&#xff0c;小到日常穿戴、出行&#xff0c;大到农业、工业领域。 物联网应用的范围现在已经遍布在我们生活的各个角落&#xff0c;让物体和物体之间能够时间沟通互联。随着物联网的不断发…

【渝粤教育】21秋期末考试市场调查与预测10243k2

1、运用算术平均法预测时&#xff0c;一般地说&#xff0c;当时间序列资料波动&#xff08;&#xff09;时&#xff0c;其观察期可以&#xff08; &#xff09;&#xff0c;所用数据可以&#xff08; &#xff09;。 &#xff08;3 分&#xff09; A&#xff0e;小 短些 少些 B…

junit测试设置不回滚_正确设置JUnit测试名称

junit测试设置不回滚寻找好名字是手工软件的挑战之一。 您需要随时随地找到它们-类&#xff0c;方法&#xff0c;变量&#xff0c;仅举几例。 但是&#xff0c;什么使名字成为好名字呢&#xff1f; 引用Oncle Bob的话&#xff1a;“三件事&#xff1a;可读性&#xff0c;可读性…

linux中用参数代替键盘输入,Linux终端中使用上一命令减少键盘输入

减少键盘输入&#xff0c;可以大大提高程序员的工作效率&#xff0c;快捷键的使用就是一个很好的例子。程序员经常使用终端。那么在终端上有没有类似的“快捷键”可以提高我们的效率呢&#xff1f;程序员的工作往往是前后相关连的。所以&#xff0c;本文将演示如何使用上一条命…

【渝粤题库】陕西师范大学209006教育政策与法规作业(高起专、高起本)

单选题 1、( )是发扬社会主义民主&#xff0c;加强党的领导在教育领域的直接体现和必然要求。 A依法治教 B教师申诉制度 C教育法 D 教育行政法 2、&#xff08; &#xff09;是在社会主义市场经济条件下&#xff0c;教育进一步改革与发展的客观需要。 A依法治教 B教师申诉制度 …