单元测试(了解)

news2024/9/19 16:54:50

单元测试定义

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

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

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 {
    @Test
    public void testgetLength(){
​
        //int length = Main.getLength(null);//如果去掉null判断会出现问题
        int length = Main.getLength("hello");
        System.out.println(length);
        Assert.assertEquals("方法内部还有问题!测试点是:",5,length);
​
    }
    @Test
    public 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);//5
        int 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.coloradmin.cn/o/1703759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js —— Express 中间件、接口编写、接口跨域 【0基础向Express模块学习】

目录 中间件的概念 什么是中间件 现实生活中的例子 Express 中间件的调用流程 ​编辑 Express 中间件的格式 next 函数的作用 Express 中间件的初体验 定义中间件函数 全局生效的中间件 定义全局中间件的简化形式 中间件的作用 ​编辑 定义多个全局中间件 局部生…

OrangePi AIpro评测 - AI服务篇

0. 环境 ●OrangePi AIpro ●windows电脑 ●路由器 之前我已经对OrangePi AIpro进行了些嵌入式基本操作的评测。接下来进行AI部分。来看看华为昇腾的特别之处。 1.普通CPU和AI CPU 这里请提前用调试串口或者ssh到板子上,记得用户名和密码,分别是HwHiAiUs…

IDEA创建Spring Boot项目

1 打开新建项目界面 如图1,打开IDEA,点击菜单栏的File->New->Project,打开新建项目界面。 图1 新建项目 2 填写项目信息 在新建项目界面点击左侧工具栏的Spring Initializr选项,进行Spring Boot项目信息的填写&#xff…

Pytorch深度学习实践笔记11(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】 0 问题描述&解决 问题描述: 通过go编写了一个程序,产生的/var/log/xx日志文件发现普通用户无权限打开 - 查看文件权限发现该文件所有者、所有者组、其他用户均有r权限 - 查看该日…

AI数学知识

AI数学知识 1、线性代数相关(矩阵)1、什么是秩2、奇异值分解3、特征值分解和奇异值分解4、低秩分解 回归分类知识点2、概率论相关1、先验概率和后验概率2、条件概率、全概率公式、贝叶斯公式、联合概率3、最大似然估计4、贝叶斯公式和最大似然估计5、伯努…

深入解读力扣154题:寻找旋转排序数组中的最小值 II(多种方法及详细ASCII图解)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

【VTKExamples::Utilities】第十三期 SaveSceneToFile

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例SaveSceneToFile,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步…

高项案例分析知识点总结

文章目录 纠错题计算题进度估算成本管理立项管理版本管理组合管理知识产权信息技术计算题运筹学 纠错题 人:人员经验、能力、数量、缺少培训;自己一个人完成需求和计划不正确流程:先做什么,后做什么,流程是否正确。是…

【UE Slate】 虚幻引擎Slate开发快速入门

目录 0 引言1 Slate框架1.0 控件布局1.1 SWidget1.1.1 SWidget的主要作用1.1.2 SWidget的关键方法1.1.3 使用SWidget创建自定义控件1.1.4 结论 1.2 SCompoundWidget1.2.1 SCompoundWidget的主要作用1.2.2 SCompoundWidget的使用示例1.2.3 SCompoundWidget的关系1.2.4 总结 1.3 …

闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?

前言 虽然说,目前 .NET FrameWork 上的大部分类都已经移植到 .NET Core 上,而且 .NET FrameWork 也已经停止了更新,未来必然是 .NET Core 的天下,但要说现在 .NET Core 就能淘汰 .NET FrameWork,我觉得为时尚早&#…

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…

利用java8 的 CompletableFuture 优化 Flink 程序,性能提升 50%

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

【吊打面试官系列】Java高并发篇 - ConcurrentHashMap 的并发度是什么?

大家好,我是锋哥。今天分享关于 【ConcurrentHashMap 的并发度是什么?】面试题,希望对大家有帮助; ConcurrentHashMap 的并发度是什么? ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16, 这意味着最多同时…

.DFS.

DFS 全称为Depth First Search,中文称为深度优先搜索。 这是一种用于遍历或搜索树或图的算法,其思想是: 沿着每一条可能的路径一个节点一个节点地往下搜索, 直到路径的终点,然后再回溯,直到所有路径搜索完为止。 DFS俗…

ComfyUI简单介绍

🍓什么是ComfyUI ComfyUI是一个为Stable Diffusion专门设计的基于节点的图形用户界面,可以通过各种不同的节点快速搭建自己的绘图工作流程。 软件打开之后是长这个样子: 同时软件本身是github上的一个开源项目,开源地址为&#…

I.MX6ULL Linux C语言开发环境搭建(点灯实验)

系列文章目录 I.MX6ULL Linux C语言开发 I.MX6ULL Linux C语言开发 系列文章目录一、前言二、硬件原理分析三、构建步骤一、 C语言运行环境构建二、软件编写三、链接脚本 四、实验程序编写五、编译下载验证 一、前言 汇编语言编写 LED 灯实验,但是实际开发过程中汇…

Python实现国密GmSSL

Python实现国密GmSSL 前言开始首先安装生成公钥与私钥从用户证书中读取公钥读取公钥生成签名验证签名加密解密 遇到的大坑参考文献 前言 首先我是找得到的gmssl库,经过实操,发现公钥与密钥不能通过pem文件得到,就是缺少导入pem文件的api。这…

maven的下载以及配置的详细教程(附网盘下载地址)

文章目录 下载配置IDEA内部使用配置 下载 1.百度网盘下载 链接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取码: 1234 2.解压即可 配置 1.打开安装文件下conf下的settings.xml文件,我的如下 2.修改配置信息(目的是为了修改本地…

【技术分享】Maven常用配置

一、Maven简介 (一)为什么使用 Maven 由于 Java 的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar 包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱…