由浅到深认识Java语言(44):Junit单元测试

该文章Github地址:https://github.com/AntonyCheng/java-notes

在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!

上一章:由浅到深认识Java语言(43):注解

49.Junit——单元测试

想要进行单元测试,需要引入两个外部 jar 包,第一个是 junit.jar ,第二个是 hamcrest-core.jar ,其中 hamcrest-core.jar 是 junit.jar 的依赖包 ,jar 包的下载地址可以使用以下网站:https://mvnrepository.com/;

下载完毕之后导入至项目 lib 文件夹下(若文件夹不存在,则需要自己搭建),然后右击 jar 包点击 As a library…… 即可导入其中内容;

Junit相关介绍

Junit是什么:

Junit是Java语言编写的第三方单元测试框架

单元测试概念:

  • 单元:在Java中,一个类就是一个单元
  • 单元测试:程序猿编写的一小段代码,用来对某个类中的某个方法进行功能测试或业务逻辑测试。

Junit单元测试框架的作用:

用来对类中的方法功能进行有目的的测试,以保证程序的正确性和稳定性,能够让方法独立运行起来。

单元测试

注意事项

  • 被测试方法所存在的类权限修饰符必须是 public;
  • 被测试方法权限修饰符必须是 publlic;
  • 被测试方法不能包含返回值,即返回值类型为 void;
  • 被测试方法不能含有参数;
  • 被测试方法必须要打上 @Test 注解来修饰;

示例如下:

package top.sharehome.Test;

public class Test {
    @org.junit.Test
    public void TestMethod() {
        System.out.println("hello java");
    }
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Junit常用注解(Junit-4.xxx版本)

  • @Test:用来修饰要测试的方法;

  • @Before:用来修饰方法,该方法会在每一个测试方法执行之前执行一次。

    这个修饰的方法中通常会做一些全局的初始化工作;

  • @After:用来修饰方法,该方法会在每一个测试方法执行之后执行一次。

    这个修饰的方法中通常会做一些全局的销毁

  • @BeforeClass:用来静态修饰方法,该方法会在所有测试方法之前执行一次,不常用

  • @AfterClass:用来静态修饰方法,该方法会在所有测试方法之后执行一次,不常用

这个版本的 Junit 较为常用,所以只给出这个版本的的示例:

package top.sharehome.Test;

public class Test {
    @org.junit.Before
    public void Before() {
        System.out.println("这个是Before注解");
    }

    @org.junit.After
    public void After() {
        System.out.println("这个是After注解");
    }

    @org.junit.Test
    public void TestMethod() {
        System.out.println("hello java");
    }
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Junit常用注解(Junit-5.xxx版本)

  • @BeforeEach:用来修饰方法,该方法会在每一个测试方法执行之前执行一次。
  • @AfterEach:用来修饰方法,该方法会在每一个测试方法执行之后执行一次。
  • @BeforeAll:用来静态修饰方法,该方法会在所有测试方法之前执行一次。
  • @AfterAll:用来静态修饰方法,该方法会在所有测试方法之后执行一次。

断言

判断一个程序运行的结果是否满足我们的预期;

相关方法:

Assert 类中的 assert 系列方法:参数通常格式是期望值实际值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例如下:

package top.sharehome.Project;

import org.junit.Assert;
import org.junit.Test;

public class Junit {
    @Test
    public void checkMethod() {
        Cacluate cacluate = new Cacluate();
        int sum = cacluate.sum(1, 3);
        Assert.assertEquals(4, sum);
    }
}

class Cacluate {
    public int sum(int a, int b) {
        return a + b + 10;
    }
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/498877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬件12、PCB模块化布局

模块画布局其实就是根据原理图中绘制的小模块,比如3.3V芯片及其外围电路部分的元器件在PCB中放在一起进行布线,会方便很多 1、最好打开分屏,一边在原理图中选中模块,一边在PCB中绘制 2、选中原理图中的模块的所有元件&#xff0…

工业智能物联网关如何助力工业防震减灾

地震灾害难以预料,一旦发生往往就损失重大。对于工业领域而言,地震灾害的影响不仅仅是对人员安全的威胁,还包括对生产设施的破坏、生产进程的中断以及伴生的持续性经济损失。 随着5G、大数据、物联网技术的发展,面向工业领域构建一…

有效的数独-java

题目描述: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图&#…

python如何获取word文档的总页数

最近在搞AI. 遇到了一个问题,就是要进行doc文档的解析。并且需要展示每个文档的总页数。 利用AI. 分别尝试了chatGPT, 文心一言, github copilot,Kimi 等工具,给出来的答案都不尽如人意。 给的最多的查询方式就是下面这种。 这个…

代码随想录阅读笔记-二叉树【翻转二叉树】

题目 翻转一棵二叉树。 思路 如果要从整个树来看,翻转还真的挺复杂,整个树以中间分割线进行翻转,如图: 可以发现想要翻转它,其实就把每一个节点的左右孩子交换一下就可以了。 关键在于遍历顺序,前中后序应…

如何通过vscode连接到wsl

下载wsl扩展 远程连接模式

SQL Server 实验二:数据库视图的创建和使用

目录 第一关 相关知识 什么是表 操作数据表 创建数据表 插入数据 修改表结构 删除数据表 编程要求 第一关实验代码: 第二关 相关知识 视图是什么 视图的优缺点 视图的优点 视图的缺点 操作视图 创建视图 通过视图向基本表中插入数据 通过视图修改基本表的…

Selenium元素定位之页面检测技巧

在进行web自动化测试的时候进行XPath或者CSS定位,需要检测页面元素定位是否正确,如果用脚本去检测,那么效率是极低的。 一般网上推选装额外的插件来实现页面元素定位检测 如:firebug。 其实F12开发者工具就能直接在页面上检测元…

JavaScript new一个对象的详细过程

JavaScript new一个对象的详细过程 new实现过程 new实现原理 new手写实现 实现过程/原理 开辟一块内存,创建一个空对象 执行构造函数对这个空对象进行构造 给空对象添加__proto__属性 调用函数改变this指向 最后返回this指向的新对象(如果是引用类型则返…

C# OpenCvSharp MatchTemplate 多目标匹配

目录 效果 项目 代码 下载 效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using O…

Collection集合 --java学习笔记

Collection Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的 List系列集合:List系列集合:ArrayList、LinkedList --java学习笔记-CSDN博客 Set系列集合:Set系列集合:…

ARMv9新特性:虚拟内存系统架构 (VMSA) 的增强功能

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 权限索引 2022 ARM引入了一种新的控制内存权限方法。 不再是直接在转换表条目 (TTE) 中编码权限,而是使用 TTE 中的字段来索引寄存器中指定的权限数组。这种间接提供…

.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案

目录(结尾附加项目代码资源地址) 引言: 1. SAGA事务模式 2. 拆分为子事务 3. 失败回滚 4. 如何做补偿 4.1 失败的分支是否需要补偿 5. 异常 6. 异常与子事务屏障 6.1 NPC的挑战 6.2 现有方案的问题 6.3 子事务屏障 6.4 原理 7. 更多高级场景 7.1 部分…

蓝桥杯单片机---第十一届省赛题目解析

文章目录 比赛题目一、代码相关定义、声明1.头文件声明2.变量声明 二、主要函数1.main函数2.按键扫描3.数码管显示4.电压 & LED显示5.定时器中断6.消除85C显示 三、次要函数1.初始化函数Init2.按键函数Key3.LED函数Led4.数码管函数Seg5.iic函数中6.onewire函数中 总结 比赛…

【Redis】redis主从复制

概述 常见的Redis高可用的方案包括持久化、主从复制(及读写分离)、哨兵和集群。其中持久化侧重解决的是Redis数据的单机备份问题(从内存到硬盘的备份);而主从复制则侧重解决数据的多机热备。此外,主从复制…

鸿蒙TypeScript入门学习第4天:【TS变量声明】

1、TypeScript 变量声明 变量是一种使用方便的占位符,用于引用计算机内存地址。 我们可以把变量看做存储数据的容器。 TypeScript 变量的命名规则: 变量名称可以包含数字和字母。除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符&…

使用ai智能写作场景之gpt整理资料,如何ai智能写作整理资料

Ai智能写作助手:Ai智能整理资料小助手 Ai智能整理资料小助手可试用3天! 通俗的解释一下怎么用ChatGPT来进行资料整理: 搜寻并获取指定数量的特定领域文章: 想像你在和我说话一样,告诉我你想要多少篇关于某个话题的文…

高效实用的Java输出流:BufferWriter类详解

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,…

ardupilot开发 --- Remote ID 篇

朝花夕拾 什么是 Remote ID ?一些概念OpenDroneIDArduRemoteIDopendroneid-core-c 库 什么是 Remote ID ? https://drone-remote-id.com/ 一些概念 符合美国航空管理局FAA规定的一些 Remote ID 设备有哪些? https://uasdoc.faa.gov/listDoc…

【APP_TYC】数据采集案例天眼APP查_查壳脱壳反编译_③

是不是生活太艰难 还是活色生香 我们都遍体鳞伤 也慢慢坏了心肠 你得到你想要的吗 换来的是铁石心肠 可曾还有什么人 再让你幻想 🎵 朴树《清白之年》 查壳 工具介绍Frida-dexDump Frida-dexDump简介 Frida-dexDump是基于Frida的一个工具&…