单元测试(了解)

单元测试定义

针对最小功能单元(方法),编写测试代码对其进行正确性测试

之前如何进行单元测试?有什么问题?

main中编写测试代码,调用方法测试

问题:

  1. 无法自动化测试

  2. 每个方法的测试可能不是独立的,前面出现异常,整个程序停下,无法对其他方法进行测试

  3. 无法得到测试报告(哪里有问题),只是有问题,需要程序员自己判断

现在如何解决?

junit单元测试框架

junit单元测试框架

介绍

可以用来对方法进行测试,它是第三方公司开源出来的(很多开发工具已经集成了Junit框架,比如IDEA)

优点

  1. 可以灵活的编写测试代码

  2. 支持一键完成对全部方法的自动化测试

  3. 针对某个方法执行测试(不影响其他方法)

  4. 不需要程序员自己分析测试的结果,会自动生成测试报告(这也是需要测试代码中写了才有)

如何使用junit单元测试框架

下面通过一个需求和代码解释:

需求:

某个系统有多个业务方法,请使用Junit单元测试框架,编写测试代码,完成对所有方法的测试

具体步骤:

  1. 导jar包(IDEA已经继承了Junit框架,不需要手工导入)

  2. 为需要测试的业务类,定义对应的测试类,为每个业务方法编写对应的测试方法(测试方法要求:公共、无参、无返回值)

  3. 测试方法上必须有声明@Test注解,然后在测试方法中编写代码(编写代码指调用方法和相关提示)

  4. 开始测试:

    直接选定某个测试方法测试指定方法;【注意:测试方法时就是调用方法,所以针对静态方法和非静态方法要怎么调用new出一个对象再调用】

    直接在测试类中右键启动测试类;

    如果项目中方法和测试类过多,直接在项目处右键运行所有的测试类

//测试类
import org.junit.Assert;
import org.junit.Test;
​
public class testMain {@Testpublic void testgetLength(){
​//int length = Main.getLength(null);//如果去掉null判断会出现问题int length = Main.getLength("hello");System.out.println(length);Assert.assertEquals("方法内部还有问题!测试点是:",5,length);
​}@Testpublic void testgetIndex(){int index = Main.getIndex("hello");System.out.println(index);Assert.assertEquals("索引的求法有逻辑问题,请检查!",4,index);}
}
​
​
public class Main {public static void main(String[] args) {String str = "hello";int length = getLength(str);System.out.println(length);//5int index = getIndex(str);System.out.println(index);//4
​}
​//准备两个方法
​//得到字符串长度public static int getLength(String str){if(str == null){return 0;}
​return str.length();}//得到字符串最后一个字母处的索引public static int getIndex(String str){if(str == null){return -1;}//如果没有,一旦传入null,则会报错//return str.length();//错误逻辑,但是编译没问题return str.length()-1;//正确逻辑}
}

Junit单元测试框架的常用注解

初步:

如果资源公用,只需要在static修饰的方法中初始化和释放资源

如果资源各自都能使用,就在非static修饰的方法中初始化和释放资源

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-02-Vue组件之间的传值

前言 我们接着上一篇文章 03-01-Vue组件的定义和注册 来讲。 下一篇文章 04-Vue:ref获取页面节点–很简单 父组件向子组件传值 我们可以这样理解:Vue实例就是一个父组件,而我们自定义的组件(包括全局组件、私有组件)…

【Vue】computed 和 methods 的区别

概述 在使用时,computed 当做属性使用,而 methods 则当做方法调用computed 可以具有 getter 和 setter,因此可以赋值,而 methods 不行computed 无法接收多个参数,而 methods 可以computed 具有缓存,而 met…

python数据分析——apply 1

参考资料:活用pandas库 apply是指把函数同时作用于DataFrame的每一行或每一列。类似于编写一些跨每行或每列的for循环,并同时调用apply函数。 1、函数 函数是对python代码进行分组和复用的一种方法。如果某段代码会被多次使用,并且使用时是需…

kubernetes(k8s) v1.30.1 创建本地镜像仓库 使用本地docker镜像仓库部署服务 Discuz X3.5 容器搭建论坛

1 master11创建本地镜像仓库 [rootmaster11 ~]# docker run -d -p 5000:5000 --restartalways --name registry registry:2 Unable to find image registry:2 locally 2: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df…

ROS for LabVIEW:实现LabVIEW与ROS的无缝集成

ROS for LabVIEW是由Tufts大学开发的一套VI集合,旨在实现LabVIEW与ROS(Robot Operating System)的无缝集成。ROS是一个灵活的机器人软件框架,而LabVIEW则是一种强大的图形化编程工具。这个工具包的推出使得LabVIEW用户能够直接与R…

人工智能——什么是摩尔定律以及它如何影响人工智能?

1. 概述 摩尔定律是现代技术发展中一个至关重要的基石。它预言了微芯片上晶体管的数量大约每两年翻一番,这一现象导致了计算能力的指数级增长。在过去的50多年里,这一定律一直是推动技术进步的强大动力,并且对人工智能领域产生了深远的影响。…

设计模式10——装饰模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 装饰模式 是一种结构型模式。…

IDEA软件和插件安装

安装IDEA版本:IDEA windows 2021.1.3 使用该版本的IDEA,并且安装下面插件后,个人认为非常好用,并且可以不用破解,无限使用企业版,了解具体方法可以留言或私信。 记录几个好用的IDEA插件,后续持…

编程-辅助工具-Git下载

文章目录 1、前言2、Git官网地址3、迅雷下载 1、前言 采用Git能下载github上的代码,其下载是采用官网下载的,但是下载速度比较慢,网上也推荐了镜像的方式,但是有些链接失效了,突然有一天想起用迅雷是不是合适&#xf…

矩阵对角化在机器学习中的奥秘与应用

在机器学习的广阔领域中,矩阵对角化作为一种重要的数学工具,扮演着不可或缺的角色。从基础的线性代数理论到复杂的机器学习算法,矩阵对角化都在其中发挥着重要的作用。 矩阵对角化的概念与原理 矩阵对角化是矩阵理论中的一个基本概念&#x…

Windows操作系统基本知识整理

目录 引言 一、Windows操作系统的发展历史 1.1 Windows 1.0到Windows 3.0 1.2 Windows 95到Windows Me 1.3 Windows NT到Windows 2000 1.4 Windows XP到Windows 7 1.5 Windows 8到Windows 10 二、Windows操作系统的核心组件 2.1 内核 2.2 文件系统 2.3 图形用户界面&…

完全背包+背包装满 总结

目录 1.背包恰好装满 (1)问题是什么 (2)问题的有效状态和无效状态 (3)问题的常考形式,以及如何去处理 1.值的大小 2.组合个数 3.排列个数 2.例题 A. Cut Ribbon HDU1114 Piggy-Bank …

四款开源电子表格组件,轻松集成到你的项目

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,最近在研究在线电子表格的技术实现,发现了几个优质的开源电子表格项目,这里和大家一起分享一下。 同时我也把其中一款…

决策树|随机森林 GBDT XGBoost|集成学习

文章目录 1 决策树模型1.1 决策树模型简介1.2 决策树模型核心问题1.2.1 分类划分标准1.2.1.1 信息增益1.2.1.2 增益率1.2.1.3 基尼系数 1.2.2 停止生长策略1.2.3 剪枝策略 1.3 决策树 - python代码1.3.1 结果解读1.3.2 决策树可视化1.3.3 CV - 留一法 2 集成学习2.1 Boosting2.…

装机必备——WinRAR安装教程

装机必备——WinRAR安装教程 软件下载 软件名称:WinRAR 软件语言:简体中文 软件大小:3.38M 系统要求:Windows7或更高, 32/64位操作系统 硬件要求:CPU2GHz ,RAM4G或更高 下载通道①迅雷云盘丨下…

生产者发送源码

具体流程 Producer先从本地尝试获取路由信息本地无缓存的路由信息时,从注册中心中获取路由信息,并缓存到本地获取到的路由信息包含了Topic下的所有Queue,Producer就可以采取负载均衡策略把消息发送到某个队列里Producer发送消息到Broker成功…

【ARMv8/v9 异常模型入门及渐进 10 -- WFI 与 WFE 使用详细介绍 1】

请阅读【ARMv8/v9 ARM64 System Exception】 文章目录 WFI 与 WFE等待事件(WFE)发送事件(SEV)本地发送事件(SEVL)WFE 唤醒事件 WFE 使用场景举例与代码实现wfe睡眠函数sev 事件唤醒函数全局监视器和自旋锁 …

5.27周报

这两周邻近毕业故没有很多时间来学习课余内容,另外最近身体有些不舒服【偏头痛】,所以学的内容不多,包括SVM向量机和ResNet【不包括代码复现】 1.SVM支持向量机的大概内容 1、目的: 主要内容是如何找到分类的那条线【超平面】—…

探索Python函数参数的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、揭开函数参数的神秘面纱 1. 位置参数:按序传值的基石 2. 关键字参数&#…

C++笔试强训day34

目录 1.ISBN号码 2.kotori和迷宫 3.矩阵最长递增路径 1.ISBN号码 链接https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5?tpId290&tqId39864&ru/exam/oj 提取题意&#xff0c;模拟一下即可。 #include <iostream> using namespace std; …