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

单元测试是软件开发流程中的重要环节,在软件工程理论里,越早发现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 {
    @BeforeAll
    public static void init() {
        System.out.println("初始化数据");
    }


 @AfterAll
    public static void end() {
        System.out.println("清理数据");
    }

    @BeforeEach
    public void setup() {
        System.out.println("当前测试方法开始");
    }

    @AfterEach
    public void tearDown() {
        System.out.println("当前测试方法结束");
    }

    @DisplayName("第1个测试")
    @Test
    void test1() {
        System.out.println("第1个测试开始测试");
    }
@DisplayName("第2个测试")
    @Test
    void 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个测试")
@Test
void test4() {
    System.out.println("第4个测试开始测试");
    Assertions.assertEquals(1, 2);
}

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

是时候升级你的Junit了,Junit5超详细实战

参数化测试

在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了,Junit5超详细实战

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

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

是时候升级你的Junit了,Junit5超详细实战

@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了,Junit5超详细实战

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

END

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

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

版权声明:本文图片和内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送联系客服 举报,一经查实,本站将立刻删除,请注明出处:https://www.4kpp.com/8296.html

(0)
漫空客漫空客
上一篇 2023年4月23日
下一篇 2023年4月23日

相关推荐

  • 失眠最好的食疗方法(失眠的食疗有哪些)

    今天给大家介绍失眠的更佳食疗方法,失眠食疗有哪些对应的知识点。希望对你有帮助,也别忘了收藏这个网站。 睡眠不好怎么办?试试这些补救措施。 现在人们的生活方式很不健康,经常熬夜或者失…

    投稿 2023年4月23日
    1180
  • 全民来找茬真的可以赚钱吗(全民来找茬真的可以赚钱吗安全吗)

    我想问一下大家有人玩过明星代言的赚钱游戏吗?我下载了几次看了看为什么没有一个是真的?,都是让你看广告的? 像全民来找茬了开心餐厅了都是明星代言的吧就没有一个不是看广告的,这种广告就…

    投稿 2023年4月23日
    920
  • 上古王冠挑战关卡5三星通关攻略

    上古王冠挑战关卡5怎么过?第五关是在上古王冠中非常有难度的关卡,很多玩家不知道该搭配什么阵容才能通关,那么接下来小编就为大家分享一下上古王冠挑战关卡5三星通关攻略。 1、不灭、龙姬…

    2023年4月22日
    1000
  • 大众和丰田哪个耐用(丰田跟大众哪个车更耐用一些)

    对于汽车而言,消费者最关心的就是耐久性和稳定性,毕竟大部分车主买车的主要用途乃是家用代步,“省心省事儿,拿起来就开,开起来还不坏”,这才是家用车该有的品质。而丰田和大众,堪称全球最…

    2023年4月23日
    1140
  • 帖子怎么发(闲鱼帖子怎么发)

    今天给大家分享一下如何发帖的知识,也给大家讲解一下如何发帖闲鱼。如果你碰巧解决了你现在面临的问题,别忘了关注这个网站,现在就开始! 怎么在贴吧上发帖? 大家应该对百度贴吧有个简单的…

    投稿 2023年4月23日
    3750
  • 华为p50的屏幕_华为p50的屏幕怎么样

    即将上市的华为p50手机在最近还是比较的值得大家等待的,接下来小编就来为大家介绍一下华为p50手机的屏幕,屏幕作为手机最重要的点之一华为p50是有着怎样的表现呢?我们一起来了解一下…

    投稿 2023年4月22日
    1220
  • 淘宝直通车软件(淘宝直通车软件哪个好用)

    在淘宝上开店假如只借助官方的一些工具的话,可能没那么便当,所以有时分还是需求尝试着运用一些第三方工具的,这样能够让你的开店愈加便当,为此这里给大家清点下淘宝必备工具有哪些吧。 一、…

    投稿 2023年4月23日
    1030
  • 淘宝比较潮的男装店(淘宝比较潮的男装店铺)

    今天给家人们分享几家我收藏中的宝藏男装店铺,最近在换季,正是需要各位小哥哥们更新衣橱的时候,这些店的衣服能提升你的青春时尚气质,帮你快速赢在起跑线,还不赶快逛起来! 第四十九天男装…

    投稿 2023年4月23日
    2110
  • u站导航()

    亲,阅读本文前,请您先点击右上角“关注”,这样您就可以继续免费收到每天分享的精彩文章了,好文章我们齐分享,星星之火可以燎原,您的支持是我们最大的动力!谢谢 据俄罗斯卫星通讯社3月7…

    投稿 2023年4月23日
    1000
  • 怎么把微信钱转到银行卡(手机微信怎么往银行卡里转钱)

    大家好,我是金芒美食,今天来给大家分享一个关于微信转账的小妙招。平常我们使用微信转账的时候,大多数都是进行扫码转账,但是如果我们的朋友没有空或者没有他的收款二维码的话,我们是无法转…

    2023年4月23日
    1290

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注