科百科
当前位置: 首页 范文大全

junit包怎么导入(junit单元测试工具使用方法)

时间:2023-08-21 作者: 小编 阅读量: 4 栏目名: 范文大全

单元测试就属于测试人员/开发人员提前介入测试的一种手段,在代码还没正式提测前,提前对函数、类进行测试。但是很多时候往往因为项目周期比较紧张,从而忽略了单元测试,这样很多bug可能要到提测后,甚至就一直隐藏在代码中无法被发现。因此单元测试是十分有必要的,它是保障代码执行的重要手段。在Java领域里,最知名的单元测试框架就是Junit了。JUnit有着较长的发展历史和不断演进的丰富功能,备受大多数Java开发者的青睐。

单元测试是软件开发流程中的重要环节,在软件工程理论里,越早发现bug,修复的成本越低。单元测试就属于测试人员/开发人员提前介入测试的一种手段,在代码还没正式提测前,提前对函数、类进行测试。但是很多时候往往因为项目周期比较紧张,从而忽略了单元测试,这样很多bug可能要到提测后,甚至就一直隐藏在代码中无法被发现。这就相当于在代码中埋藏了定时炸弹。因此单元测试是十分有必要的,它是保障代码执行的重要手段。

在Java领域里,最知名的单元测试框架就是Junit了。 JUnit 有着较长的发展历史和不断演进的丰富功能,备受大多数 Java 开发者的青睐。

最新的Junit版本是Junit5,这个版本可以说是 JUnit 单元测试框架的一次重大升级,首先需要 Java 8 以上的运行环境,虽然在旧版本 JDK 也能编译运行,但要完全使用 JUnit 5 功能, JDK 8 环境是必不可少的。

Junit5的主要特性有:

1. 提供全新的断言和测试注解,支持测试类内嵌

2. 更丰富的测试方式:支持动态测试,重复测试,参数化测试等

3. 实现了模块化,让测试执行和测试发现等不同模块解耦,减少依赖

4. 提供对 Java 8 的支持,如 Lambda 表达式,Sream API等

接下来,我们来学习下Junit的一些基本使用。

在工程中引入Junit依赖

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter-engine</artifactId>

<version>5.5.2</version>

<scope>test</scope>

</dependency>

先写一个简单的测试类

@DisplayName("第1个测试类")public class DemoTest {@BeforeAllpublic static void init() {System.out.println("初始化数据");} @AfterAllpublic static void end() {System.out.println("清理数据");}@BeforeEachpublic void setup() {System.out.println("当前测试方法开始");}@AfterEachpublic void tearDown() {System.out.println("当前测试方法结束");}@DisplayName("第1个测试")@Testvoid test1() {System.out.println("第1个测试开始测试");}@DisplayName("第2个测试")@Testvoid test2() {System.out.println("第2个测试开始测试");}}

几个常用的注解解释:

@DisplayName:测试类在测试报告中的名称,可以加在类上,也可以加在方法上

@BeforeAll和@AfterAll:它们定义了整个测试类在开始前以及结束时的操作,只能修饰静态方法,主要用于在测试过程中所需要的全局数据和外部资源的初始化和清理

@BeforeEach和@AfterEach:它们所标注的方法会在每个测试用例方法开始前和结束时执行,主要是负责该测试用例所需要的运行环境的准备和销毁。

在idea中运行测试类,看到控制台打印信息如下:

可以看到,在整个测试过程中,init函数和end函数只执行了一次,setup和tearDown函数在每次运行test1、test2函数前后分别执行。

重复性测试

在函数上添加@RepeatedTest注解可以指定重复执行的次数

@DisplayName("我的第三个测试-断言")@RepeatedTest(3)void test3() {System.out.println("我的第三个测试开始测试");Assertions.assertEquals(1, 1);}

执行代码,可以看到test3函数连续执行了3次

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦

断言

在Junit5中,提供了新的断言类Assertions,常见的api:

assertEquals:判断两个数据是否相等

assertNotEquals:判断两个数据是否不相等

assertNotNull:判断对象是否为空

示例:

@DisplayName("第4个测试")@Testvoid test4() {System.out.println("第4个测试开始测试");Assertions.assertEquals(1, 2);}

执行测试,可以看到case执行失败

参数化测试

在Junit5中,对参数化提供了非常丰富的支持,比如固定数组、csv文件等。

首先在项目中添加参数化依赖包

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.5.2</version><scope>test</scope>

</dependency>

数组化参数

在测试函数上添加参数化相关的注解即可,如:

@DisplayName("第5个测试-参数化测试-数字")@ParameterizedTest@ValueSource(ints = {1,2,3})void test5(int num) {System.out.println("当前数字为:" + num);}

注解解释:

@ParameterizedTest:运行参数化测试

@ValueSource:参数来源为数组,支持各种基本数据类型的数组,如整型数组ints,字符串数组strings,chars等

按照上述配置,test5函数会运行3次,每次会把数组中的元素传入num值

Junit支持将参数数据写入到一个csv文件中,然后在测试用例中读取csv文件中的数据。

在项目resource目录下新建一个csv文件,内部保存用户名和token的对应数据

@DisplayName("第8个测试-参数化测试-csv文件")@ParameterizedTest@CsvFileSource(resources = "/output.csv")void test8(String name, String token) {System.out.println("当前姓名为:" + name + ",当前token为:" + token);}

@CsvFileSource:指定csv文件的路径

在函数名上定义csv文件中每列对应的参数名,这样csv文件中有几行数据,test8函数就会运行几次,并且每次都会传入对应列的数据。

以上就是Junit常用的一些使用场景,更多Junit的使用方法,可以去Junit官网查看相关的示例。

END

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    推荐阅读
  • 反贪风暴3演员表(电影反贪风暴3演员表)

    接下来我们就一起去了解一下吧!反贪风暴3演员表《反贪风暴3》是由林德禄执导,古天乐、张智霖、郑嘉颖、邓丽欣、栢天男、谭耀文、谢天华、冯雷、丁海峰等人主演的动作;悬疑;犯罪电影。电影讲述了陆志廉和刘保强两人分别侦查贪污及洗黑钱案件,但随着调查的不断深入,两人却发现贪污案和洗黑钱案有着千丝万缕关系,与此同时二人也身陷危机之中。

  • 网上怎么代扣驾驶证分 网上怎么代扣驾照分

    虽然如今一辆车可以绑定三本驾驶证,但新绑定的驾驶证无法处理绑定之前所发生的违章。

  • 毛泽东时代的十大名牌(毛泽东时代的十大名牌)

    下这些,当年你的父母可能拥有过:1、北京牌电视机(天津产)2、灯塔肥皂3、凤凰牌自行车4、海鸥牌相机5、工字牌汽枪6、三角牌烙铁7、回力球鞋8、上海牌手表9、老上海手牌蛤蜊油10、飞人牌缝纫机那时候的名牌产品质量很牢靠,但当时很难买到,那时买很多东西都要凭票哦:粮票最常见最缺不得每一张图都勾起了我们这代人对往事的回忆,你用过这十大名牌吗?

  • 牛油的用途(牛油的用途介绍)

    牛油的用途牛油是维他命A的富丰来源,而且容易吸收,牛油富含微量元素,所含的硒比大蒜还多,牛油中含有具有抵御肠胃感染的作用。牛油不是黄油,是牛科动物黄牛或水牛的脂肪油,经过提炼加工制成白色固体或半固体,具有特殊香味和膻味。牛油分纯牛油、植物牛油、加盐牛油、无盐牛油及精炼牛油几种,每种作用不同。精炼牛油更适合主食,无盐牛油适用于一些饼干糕点,买时应注意。

  • 金庸十大奇幻景点(金庸笔下超美旅游地)

    泰山的山势巍峨峻秀、雄伟奇拔,令人叹为观止。桃花岛上有丰富的树木花卉资源,共有356个树木品种,国家自然保护范围内的珍稀树种多达10余种。享有“海上植物园”的盛名。幽雅别致的青瓦石墙,古色古香的白族民居;娇柔婉转的白族女子。风情万种——襄阳城有网友统计,金庸老先生在他的《射雕英雄传》和《神雕侠侣》中提到襄阳城的次数,多达340次以上。为抵御外敌入侵,郭靖黄蓉夫妇戍守襄阳数十载的故事,深入人心。

  • 谁都别说让我一个人躲一躲歌名(这首歌的完整歌词)

    谁都别说让我一个人躲一躲歌名是《原谅》,现在小编就来说说关于谁都别说让我一个人躲一躲歌名?下面内容希望能帮助到你,我们来一起看看吧!

  • 秋冬必吃这一道汤全家都爱(秋天记得喝这碗汤)

    石斛虫草花瘦肉汤今天是秋分,秋分是二十四个节气的第16个节气,秋分这一天太阳直射地球赤道,大部分地方在秋分这一天昼夜时间均等,秋分过后白天时间变短二零。莲子和桂圆都是清补的食材,莲子和桂圆有补心血和健脾胃。说了那么多,下面就来看一下石斛虫草花瘦肉汤的详细做法。3把莲子浸泡10分钟,石斛和虫草花洗净,瘦肉切小块,便于煲出味道。

  • 如何恳请同事帮忙(怎样寻求同事的帮助)

    某单位为提前完成生产任务,给每个车间都下达了硬性指标要求工人每天加班三小时。因此,寻求同事帮助,一定要充满诚意。同事帮忙结束后,也不要忘记表达自己的感激,多说几句谢谢,让对方得到心里安慰。3.寻求同事帮忙不能强加于人寻求同事帮忙,要根据同事的身份和实际的情况来确定求日的对象。只有这样,オ能提高对方答应的概率。否则,不但会让对方很为难,也会因此让双方关系变得更尴尬。

  • 冠状动脉介入治疗进展(冠状动脉扩张症的新分型及介入治疗进展)

    冠状动脉扩张症以心肌缺血症状为主要表现,如心绞痛、心肌梗死,少见机械压迫症状,猝死发生率低,罕见瘤体破裂。在其病因中,50%是由于动脉粥样硬化,但介入相关的动脉瘤发病率增加明显。其发生机制包括介入暴力操作、支架贴壁不良,与支架平台及药物刺激相关。其中假性动脉瘤破裂风险高,需要积极非药物治疗。此外,双层金属支架可以解除邻近冠脉狭窄。其中仅1例患者在术后4年动脉瘤未消失,原合并狭窄消失,无心绞痛。

  • 桌子上的水彩笔如何去除(桌子上的水彩笔如何去除干净)

    2、在擦拭的过程中一定要注意力度,不能太用力,以免将对桌造成受损,将水彩笔痕迹去除之后,晾干桌,最后再用干的毛巾轻轻擦拭一下就好了。