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

软件测试丨单元测试框架怎么搭?新版的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

世乒赛国乒今天决战日本女团!男团阻击张本智和,或将爆发恶战北京时间10月8日,成都世乒赛即将诞生首个冠军,女团世界排名第一的中国队与世界排名第二的日本队已会师最后一轮,即将争夺该项目的金牌。从两队内部的格局来看,孙颖莎陈梦王曼昱伊藤美诚早当拼夕夕穿搭回归现实今天下午去取了快递,新买的针织衫也到啦就是说最近真的好喜欢百褶裙长筒靴看看我有没有踩雷吧第一套是墨绿色长袖毛衣白衬衫短裙and长筒靴模特图是这样和这样呜呜呜,模特图真的好美一眼就爱全球电竞赛事奖金超3亿刀!一场电竞的鱿鱼游戏文黄靖原电竞赛事逐渐从圈内狂欢,持续出圈,不断冲破记录逐年增长的奖金成为全社会高度关注的焦点。近期,赛程逐渐白热化的英雄联盟S12和DOTA2Ti11无疑成为了玩家们关注的焦点。虽羊了个羊们围猎玩家,移动端休闲小游戏靠什么点燃市场热情?钛度热评钛度热评直播间是由钛媒体钛度热评发起的原创直播栏目,邀请对不同行业不同商业模式有着独到见解深度观察的媒体人和行业从业者,第一时间就热点事件进行深度点评,通过多角度解读全面展示事件的随笔(3)守护银龄时代最好的医生是自己呵护养生贵在自已一当前状况在讨论守护银龄世界中,先来了解一下国情。据2021年12月9日国新办举行的关于加强新时代老龄工作的意见(意见)发布会上,国家卫生健康委老龄健康司司长王海东一分钟教你分辨你是哪种湿中医中有这样一句话千寒易除一湿难去这句话不难理解就是说祛除寒气容易但祛除湿气却很难。祛湿为什么这么难?究其原因就是到底有没有搞清楚是湿热还寒湿否则不对症的一味祛湿只会适得其反那今天明日寒露,老话说寒露吃5宝,是指哪5宝?顺应时节好过秋明日寒露,老话说寒露吃5宝,是指哪5宝?顺应时节好过秋寒露节气,北方冷空气一直南下,让凉爽的秋天,直接转变为寒冷的深秋。气温的变化比较明显,所以我们可以明显感觉到寒冷,而且阴雨绵绵肾结石多吃这三种食物能带来不可思议的效果(结石食谱)肾结石的发生原因有很多,其中和饮食也有一定的关系,所以当患上肾结石时,患者更要注意合理饮食,其中有一些食物对肾结石还有一定的防治作用肾结石患者可配合饮食来调治,那么肾结石吃什么好的想要预防大肠癌的发生,饮食牢记这4点,并坚持运动,别忽视大肠癌是一种生活中常见的消化道肿瘤,早期时患者并无过于明显的感觉,可是随着病情加重,便会有便血,贫血及腹痛等症状,有时候还会出现肠梗阻的问题若是没有及时治疗,便会导致全身症状,例如睡觉打呼亲人嫌!一张方子,养肺化痰祛湿,帮你解决烦恼在生活中打呼噜是一种很常见的现象。很多人认为打呼噜证明睡得香,其实这个想法并不对。打呼噜是属于一种睡眠障碍疾病。中医认为,肺主气,司呼吸,开窍于鼻,是人体和外面气体交换的通道,就叫美意成功晋级,塞尔维亚锁定第一,荷泰无缘八强,世锦赛最新排位女排世锦赛第二阶段接近收尾,E组,日本3比0轻取波多黎各,反超中国暂进前三,巴西3比0荷兰,后者成为E组第三支出局的队伍,意大利3比0阿根廷,率先从E组晋级八强,F组,塞尔维亚3比
机构2022年全年中国智能手机市场出货量降13。2北京日报客户端实习记者夏骅29日,IDC中国发布手机季度跟踪报告,据悉,2022年第四季度中国智能手机市场出货量约7292万台,同比下降12。6。2022年全年中国智能手机市场出货王煜全这个时代没机会了?还是说你没看到?过去的一年,我最常听到,也最常被问到的问题就是煜全,你说今天还有什么机会吗?,也常常听到比我小很多的年轻人在感叹互联网红利早都没了,未来没啥希望了。这些问题太多,以至于总让我感觉似任泽平大战司马南戴帽子打棍子时代已经过去了2023春节之后,最火的话题莫过于任泽平大战司马南。事情起因是任泽平率先在年除夕前夜发文,他呼吁现在各界都呼吁把网上个别喊打喊杀让民营企业离场退场的坏人管起来。这些坏人破坏了市场经女神异闻录4黄金版评测一款不落后于时代的JRPG神作主笔啼书编辑白菜Lame(本文解释权归白菜Lame账号所有,未经授权禁随处转载)在通关P5R之后,我就紧接着玩了前身P4G,我认为P4G不落后于时代的JRPG神作,尤其是其中的故事欧洲德国一个小镇过中国狂欢节,自称中国人历史有知识历史头条历史图文历史有知识巴伐利亚有一个叫迪特福特的中国城,已有100多年历史。该城著名的中国人泉特别惹人注目。这个中国人泉做成一个清朝官员,他昂着头,挺着肚子,撇着八字罗马,创业唯艰!以战立国与劫掠萨宾少女19世纪的英国首相帕麦斯顿说罗马帝国时期,任何一个罗马人,当他走到世界各地,他只要说我是罗马人,就可以得到尊重和保护。从帕麦斯顿的话中,我们就可以知道罗马的公民权是多么珍贵。而且罗23年春节后最值得入手的三款高端旗舰手机体验好价格还能接受新年马上就要结束了,去年忙忙碌碌了一年,也该对自己好一点了,现在能买的最重要的东西就是手机了,现在的生活已经离不开手机了,带给我极大的便利,如果要买旧要买一台高端手机了,今天我就推芯片业开启了一轮地震,英特尔业绩大幅滑坡芯片业开启了一轮地震,英特尔业绩大幅滑坡,数据显示,英特尔披露的数据显示,2022财年,其实现收入631亿美元,同比下降20净利润80亿美元,同比下降60。其中,2022年第四季度两百出头的路由器,RedmiAX3000帮助你入门WiFi6尽管家用WiFi7路由器即将登场,但相信很多家庭都还没有升级WiFi6网络,而时至今日,一些WiFi6路由器的价格也已经来到低点,比如来自Redmi的AX3000路由器,就是一款值扒一扒Bean注入到Spring的那些姿势,你会几种?大家好,我是三友这篇文章我准备来扒一扒Bean注入到Spring的那些姿势。其实关于Bean注入Spring容器的方式网上也有很多相关文章,但是很多文章可能会存在以下常见的问题注入古尔曼部分苹果高管坚信ARVR头显会取代iPhone成为新支柱IT之家1月31日消息,马克古尔曼(MarkGurman)在彭博社发表最新文章,指出在苹果内部,一些负责推进RealityPro混合现实头显的高层管理人员坚信ARVR头显将会取代i