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

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

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

单元测试就属于测试人员/开发人员提前介入测试的一种手段,在代码还没正式提测前,提前对函数、类进行测试。但是很多时候往往因为项目周期比较紧张,从而忽略了单元测试,这样很多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

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

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

    推荐阅读
  • 冬季渔夫帽搭配什么衣服(冬季渔夫帽搭配方式)

    渔夫帽+牛仔外套。渔夫帽能起到修饰脸型的作用,短裤则能完美展现腿部线条,渔夫帽与短裤的组合搭配,不但是夏日出街的清爽时尚搭配,而且还能起到防晒作用。对于短裤,可以选择休闲白衬衫配休闲短裤,再搭配亮色渔夫帽,会使整体造型的街头感中增添了复古摩登的气息;或者可以选择oversized款式的宽松T恤,下面搭配超短裤,营造下半身失踪的潮流感,再搭配黑色渔夫帽,尽显随意冷酷的时尚感,同时还充满活力与青春的气息。

  • 如何科学的减内脏脂肪(如何减掉内脏脂肪)

    如何减掉内脏脂肪从脂肪的类型上来说,人体内的脂肪分为皮下脂肪和内脏脂肪,皮下脂肪是看的到,摸得着的肥肉,而内脏脂肪是围绕我们的内脏器官存在的,它存在于人的腹腔内,它起着支撑、稳定和保护内脏器官的作用如果我们体内的内脏。

  • 艾尔登法环削韧处决怎么用

    艾尔登法环削韧处决怎么用?艾尔登法环削韧处决技巧分享大体型的敌人和一部分中体型的敌人是不能弹反也不能偷袭的,这种情况下可以通过连续攻击来打空敌人的韧性条,将敌人打趴下进入破绽状态,然后正面靠近按攻击键发动一次牛逼的攻击,成功后会感觉自己非常强大。如果是对付比较强力的人形敌人,也可以使用带有强力削韧判定的攻击方式快速打出破绽状态,然后发动处决攻击造成大量伤害,快速且安全的结束战斗。

  • 泰拉瑞亚中怎么获得工匠作坊(泰拉瑞亚提基套装如何获得)

    口袋巴士小编给大家带来了泰拉瑞亚套装攻略“泰拉瑞亚提基套装如何获得提基套装属性”挖掘、探索、制造、战斗、修筑等有趣的活动都可以在这个动感十足的冒险游戏中实现你还在等什么,让我们赶紧来看看吧,下面我们就来说一说关于泰拉瑞亚中怎么获得工匠作坊?泰拉瑞亚中怎么获得工匠作坊口袋巴士小编给大家带来了泰拉瑞亚套装攻略“泰拉瑞亚提基套装如何获得提基套装属性”!每件提基套装可以增加1个召唤物数量和10%召唤伤害。

  • 染发发根怎么染(八个染发技术难点)

    首先白发是属于抗拒发,毛鳞片紧闭,本身无色素粒子,需补充色素粒子。2.将发原色尽可能调理成灰色或与目标色综合,再进行上色。因为黑色素细胞的病变、衰退、减少或不分泌黑色素所造成的。

  • 花卉营养液怎么配置(花卉营养液如何配置)

    花卉营养液怎么配置液体肥料发展至今,已经有200年的历史了。品种很多,大致可分为液体氮肥和液体复混肥两大类。液体氮肥有铵态、硝态和酰胺态的氮,如液氨、氨水、硝酸铵与氨的氨合物、尿素与氨的氨合物等。用量大时,按比例随兑随用。尿素5克,磷酸二氢钾3克,硫酸钙l克,硫酸镁0.5克,硫酸锌0.001克,硫酸铁0.003克,硫酸铜0.001克,疏酸锰0.003克,硼酸粉0.002克,加水10升,充分溶解后即成营养液。

  • PS怎么制作细格子唯美水印(图片怎么弄网格水印)

    注意在新建画布时,设置的小一些,一般长宽设置10mm即可。完成以后中间就是空心的。

  • 阿玛尼的手表属于什么档次(阿玛尼的手表介绍)

    阿玛尼女装是顶级的,客户都是有钱人阿玛尼的女装是属于奢侈品级的。美女童瑶是阿玛尼的中国区的品牌大使。她穿的这件黑色条纹小开衫搭配灰色的阔腿裤也是阿玛尼的。阿玛尼的衣服包包可能比较贵,但手表则相对平价一些。

  • 财务管理属于工商管理类吗(财务管理是不是属于工商管理类)

    下面更多详细答案一起来看看吧!工商管理属于一级学科,财务管理属于二级学科,财务管理是工商管理专业的二级学科。

  • 红包不是最多200吗(红包不是redbag)

    红包也可以用拼音hongbao,这个表达也有被各大词典收录,只是实际使用的时候没有上面几种常见。