范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

软件测试丨单元测试框架怎么搭?新版的Junit5有哪些神奇之处?

  单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。
  总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
  那单元测试框架该怎么搭呢?Junit5又能给我们带来怎样的惊喜呢?首先我们来看看什么是Junit5,再看看如何使用吧~What is Junit5?Junit5简介
  什么是Junit5,在Junit5的官方介绍文档中这写到:Junit5由JUnit Platform + JUnit Jupiter + JUnit Vintage3部分构成
  借用IBM Developer的一张图来说明JUnit 5 的架构:
  JUnit Platform :
  其主要作用是在 JVM 上启动测试框架。它定义了一个抽象的 TestEngine API 来定义运行在平台上的测试框架;也就是说其他的自动化测试引擎或开发人员 定制的引擎都可以接入 Junit 实现对接和执行。同时还支持通过命令行、Gradle 和 Maven 来运行平台(这对于我们做自动化测试至关重要)JUnit Jupiter:
  这是 Junit5 的核心,可以看作是承载 Junit4 原有功能的演进,包含了 JUnit 5 最新的编程模型和扩展机制;很多丰富的新特性使 JUnit  动化测试更加方便、功能更加丰富和强大。也是测试需要重点学习的地方;Jupiter 本身也是 一个基于 Junit Platform 的引擎实现,对 JUnit 5 而言,JUnit Jupiter API 只是另一个 API!JUnit Vintage:
  Junit 发展了10数年,Junit 3 和 Junit 4 都积累了大量的 用户,作为新一代框架,这个模块是对 JUnit3,JUnit4 版本兼容的测试引擎,使旧版本 junit 的 动化测试脚本也可以顺畅运行在 Junit5 下,它也可以看作是基于 Junit Platform 实现的引擎范例。
  JUnit 5 对 Java 运行环境的最低要求是 Java 8。Junit5的新特性特性与JUnit4注解比较
  JUnit5的 新特性有:嵌套单元测试、Lambda支持、参数化测试、重复测试、动态测试
  JUnit 4 与 JUnit 5 中的注解比较
  Junit5
  Junit4
  说明
  @Test
  @Test
  被注解的方法是一个测试方法。与 JUnit 4 相同。
  @BeforeAll
  @BeforeClass
  被注解的(静态)方法将在当前类中的所有 @Test 方法前执行一次。
  @BeforeEach
  @Before
  被注解的方法将在当前类中的每个 @Test 方法前执行。
  @AfterEach
  @After
  被注解的方法将在当前类中的每个 @Test 方法后执行。
  @AfterAll
  @AfterClass
  被注解的(静态)方法将在当前类中的所有 @Test 方法后执行一次。
  @Disabled
  @Ignore
  被注解的方法不会执行(将被跳过),但会报告为已执行。JUnit 5 常用注解Junit5常用注解展示
  注解
  说明
  @Test
  表明一个测试方法
  @DisplayName
  测试类或方法的显示名称
  @BeforeEach
  表明在单个测试方法运行之前执行的方法
  @AfterEach
  表明在单个测试方法运行之后执行的方法
  @BeforeAll
  表明在所有测试方法运行之前执行的方法
  @AfterAll
  表明在所有测试方法运行之后执行的方法
  @Disabled
  禁用测试类或方法
  @Tag
  为测试类或方法添加标签
  @RepeatedTest
  额外重复执行
  @Nested
  嵌套测试实操演示
  1)创建maven工程XUnit,pom.xml中添加Junit5的依赖      org.junit.jupiter     junit-jupiter-engine     5.5.2        org.junit.platform      junit-platform-runner      1.5.1  复制代码
  2)其余的XUnit框架通用的设计运行规则可参考博客: 如何利用xUnit框架对测试用例进行维护-xUnit简介及基本使用方法(基于Junit4)
  3)添加用例@Test,再在用例执行前后添加@BeforeEach、@AfterEach:
  运行结果:
  4)在测试类执行前后添加@BeforeAll和@AfterAll
  测试结果:
  5)在测试用例test1上加入注解@Disabled,使test1失
  测试结果:
  从测试结果中我们可以看到test1用例被ignore,没有被执行
  6)分别将test1和test2用@DisplayName加上用例展示名称
  测试结果:
  7)对测试用例2加上注解@RepeatedTest,使其额外重复执行3次
  测试结果:
  从测试结果中我们可以看到测试用例2被额外重复执行了3次
  8)对于@Nested嵌套执行举例如下:
  测试结果:
  由测试结果可以看出,@Nested的执行顺序为先执行@Nested嵌套外层的用例,再以倒叙形式执行@Nested用例,然后再执行第二层嵌套的用例:
  外层->倒叙嵌套->第二层嵌套
  Junit5套件执行套件介绍
  注解
  作用
  @RunWith(JUnitPlatform.class)
  执行套件
  @SelectPackage({"com.packageA","com.packageB"})
  创建测试套件
  @SelectClasses( {a.class,b.class,c.class} )
  创建测试套件
  @IncludePackage("包名")
  过滤需要执行的测试包
  @ExcludePackages
  过滤不需要执行的测试包
  @IncludeClassNamePatterns
  过滤需要执行的测试类
  @ExcludeClassNamePatterns
  过滤不需要执行的测试类
  @IncludeTags("production")
  过滤需要执行的测试方法
  @ExcludeTags("PROD")
  过滤不需要执行的测试方法
  @RunWith 是从Junit4迁移过来的,@RunWith 连同它的参数 JUnitPlatform.class(一个基于 JUnit 4 且理解 JUnit Platform 的 Runner)让您可以在 Eclipse 内运行 JUnit Jupiter 单元测试。Eclipse 尚未原生支持 JUnit 5。未来,Eclipse 将提供原生的 JUnit 5 支持,那时我们不再需要此注解;Junit5官方给出了替代它的注解:
  @RunWith+@SelectPackages 有两个包testcasedemo, junit5demo,利用@RunWith+@SelectPackages将包中测试类依次运行
  套件类:
  测试结果:
  @RunWith+@SelectPackages+@IncludePackage
  @RunWith+@SelectPackages+@IncludePackages配合使用过滤出需要执行的测试包testcasedemo.demo2
  套件类:
  测试结果:
  @RunWith+@SelectPackages+@ExcludePackages
  @RunWith+@SelectPackages+@ExcludePackages配合使用过滤出不需要执行的测试包testcasedemo.demo2
  套件类:
  测试结果:
  @RunWith+@SelectPackages+@IncludeClassNamePatterns
  将junit5demo包下的TestJunit5demo和testcasedemo.demo2所有测试类过滤出来并执行
  套件类:
  测试结果
  @RunWith+@SelectPackages+@IncludeTags 在testcasedemo.demo2.TestDemo2的方法testDemo2上加上注解@Tag:
  过滤并执行方法testDemo2:
  套件类:
  测试结果:
  参考文档
  Junit5官网:
  https://junit.org/junit5/docs/current/user-guide/#overview
  IBM Developer:
  https://www.ibm.com/developerworks/cn/java/j-introducing-junit5-part1-jupiter-api/index.html
  https://www.ibm.com/developerworks/cn/java/j-junit5/index.html

蚌埠市召开政银企对接会搭建融资平台赋能台企发展蚌埠市召开政银企对接会(图片来源蚌埠市台办)中国台湾网11月4日讯近日,安徽省蚌埠市台办联合兴业银行蚌埠分行举办政银企对接会,与6家台企初步达成合作意向。蚌埠市委常委统战部部长张晓网暴内容集中的直播间应及时关停!多平台已处置网课爆破信息11月4日,网信中国官方微信号发布关于切实加强网络暴力治理的通知(下称通知),南都记者注意到,其中提到要建立健全网暴预警预防机制,强化网暴当事人保护,严防网暴信息传播扩散,依法从严A。O。史密斯邱步携手同志同道同盟构建高端智慧新生态10月27日,以领技奋进为主题的第三届中国燃气具技术大会在广东顺德隆重开幕。大会上,美国A。O。史密斯集团高级副总裁兼中国公司总裁邱步先生受邀现场连线,发表了同志同道同盟主题演讲。天赐材料研究报告全球电解液龙头,一体化扩产保障成长(报告出品方作者申港证券,曹旭特)1深耕一体化领跑电解液赛道1。1电解液是锂电核心主材电解液对电池寿命功率能量密度安全性等性能指标都有显著影响。电解液一般应当具备如下特性1电导率高没了kindle别担心,小米生态链电子纸来了,还支持多应用分屏功能说起墨水屏电纸书,很多人可能都会想到Kindle,但是不知道是什么原因,Kindle突然就宣布退出中国市场了,我觉得挺遗憾的,如今没有了Kindle之后,我们还有好用的电纸书吗?其iPhone14系列优质手机壳,推荐这两款,价格不贵很好用虽然苹果年年被骂,新机年年被吐槽,但不可否认的是苹果的销量却在稳步提升,特别是中国市场上苹果更是赢麻了,今年发布iPhone14系列新机后,市场表现如同开挂一般。根据Canalys搭载20个车规级传感器小马智行发布第三代自动驾驶卡车系统出品丨搜狐汽车搜狐商用车近日,搜狐商用车从小马智行官方获悉,小马智行发布第三代自动驾驶卡车软硬件集成系统。该系统方案面向干线物流业务需求设计,已率先应用于小马智行与三一重卡合作打造机甲风智能控长续航试驾奇瑞无界Pro嗨!年轻人,你的人生起步阶段应该拥有一辆纯电代步小车,又潮又快又智能的那种。这就是我今天要试驾的奇瑞无界Pro,一辆主打新时代年轻消费者的智能小怪兽。我始终认为,买新能源车还得优先禾多科技受邀参与第四届智能网联车与自动驾驶创新国际峰会11月2日4日,由中欧新能源智能汽车产业联合会(SinoEUcarbonfiberandadvancedcompositesassociation,SENIA)和智能网联汽车及自动吃鸡呼声高商城效果爆炸的时装!老六可以有但没必要务实不浮夸!我是你们的情报小能手,微笑十倍镜。聊到吃鸡手游和平精英的军需,相信许多小伙伴都会在第一时间想到那些返场呼声非常高的皮肤,事实上某些皮肤虽然好看,但却是氪金的陷阱,入手后汤加丽因人体模特和丈夫离婚,被父亲冷战,今46岁孤身一人你怎么会去当什么人体模特?我没你这样不要脸的女儿!你别再进这个家门了!2002年9月,汤加丽的父亲愤怒地看着对面的女儿,两人之间的桌子上,扔着一本名为汤加丽人体艺术写真的册子。汤加
两次落选名单后,韩邀请百家中国旅行社赴韩国考察!赴韩考察项目?按照韩国的乐观预估,在解除对我们的限制之后,韩将会接待超过300万的中国游客,这个数据也是疫情之前最高峰的一半左右,但是对于当下的韩旅游业务来说已经是不错的了,如果还优化营商环境激发专精特新企业发展活力充分释放央视网消息工业和信息化部的最新数据显示,2月份,我国专精特新小巨人企业发展信心创新能力和对外扩张态势明显提升,发展活力充分释放。工业和信息化部赛迪研究院的最新统计显示,2月份,专精国产SSD崩盘了!但黑片泛滥,掉盘严重?别让杂牌毁了国产的口碑最近国产SSD的价格崩盘了,价格是越来越便宜。以2T大容量的国产SSD为例,价格不断的下跌,从1000多一路降到了400多。照这个趋势下去,很可能会降到300多。原本我还是很高兴,曝苹果即将发布USBC接口AirPodsPro2据报道,开发者aaronp613在苹果iOS16。4RC版本的系统代码中发现了型号为A3048的AirPods耳机。据知名分析师郭明錤透露,这是即将推出的AirPodsPro2的U三星980PRO2TB固态硬盘评测近年来固态硬盘降价打骨折,我先后给自己的两台主机换上了大容量固态硬盘。不过前段时间多个品牌的固态出现0E事件,有不少用户中招。0E故障的具体表现是硬盘的健康度下降过快,自查方法是在掌阅iReader墨水屏Ocean3今晚开卖,首发1299元IT之家3月25日消息,掌阅日前发布最新iReader墨水屏电纸书Ocean3今晚正式开卖,7英寸300ppi规格,首发1299元。据介绍,Ocean3搭载了EinkCarta12未央区雷寨小学开展书香荡漾亲子悦读活动阳光讯(杨晓敏记者张允铎)一路书香,幸福成长。教育孩子家长应以身作则,从阅读开始。对喜欢阅读的人来说,看书是一种享受,因为书卷中的意念像一股无形的动力,影响你的思想和心态。读书并不2022暑假江西福建自驾游记(第二天,井冈山到筑峰顶龙岩)7月24日,星期天,又是一个大晴天。今天的目的地是福建龙岩,中途上筑峰顶看一看。筑峰顶位于上犹县西北部与遂川县交界处,海拔1300米,是一新开发出的免费小众景点。茨坪镇到筑峰顶有1河南水生态治理见成效野生动物组团来打卡来源新华网新华社郑州3月25日电(记者牛少杰)迟日江山丽,春风花草香。迎着清晨第一缕阳光,沉寂一夜的白龟湖国家湿地公园重新热闹起来,各种水鸟翔集湖面,或俯冲捕食,或追逐嬉戏,欢快惬凤凰艺术人工智能技术影响摄影史进入想照片ThinkPhoto阶段ThinkPhoto科技在很多方面改变了摄影艺术。从滤镜修图美颜应用APP的激增,到社交媒体上不断泛滥的数字照片。今天,在人人都是摄影师的时代,摄影作为一门艺术媒介和创作语言,自身e汽车亿咖通科技生态日推出多款汽车智能化解决方案从中国汽车产业的独特加分项,到成为全球汽车行业效率竞争的关键赛点,汽车智能化正在迎来全新的发展阶段。以赋能创变EnableAccelerate为主题,3月24日,首届亿咖通科技生态