JUnit 单元测试(详解)

 🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~

💟 作    者:码喽的自我修养🥰
📝 专    栏:Java入门到实战 🎉

🌈 创作不易,如果能帮助到带大家,欢迎 收藏+关注  💕

​ 🌈🌈文章目录  

1. 测试分类

2. JUnit单元测试介绍

3. 引入本地JUnit.jar

4. 编写和运行@Test单元测试方法

5. 设置执行JUnit用例时支持控制台输入

1. 设置数据:

2. 配置文件位置:

3. 如果上述位置设置不成功,需要继续修改如下位置

6. 定义test测试方法模板

本文为JUnit单元测试相关知识,下边将对JUnit单元测试概念,JUnit安装与使用,编写和运行@Test单元测试方法,设置执行JUnit用例时支持控制台输入,定义test测试方法模板等进行详尽介绍~ 

1. 测试分类

黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。

白盒测试:需要写代码的。关注程序具体的执行流程。

2. JUnit单元测试介绍

JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个测试框架(regression testing framework),供Java开发人员编写单元测试之用。

JUnit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。

要使用JUnit,必须在项目的编译路径中引入JUnit的库,即相关的.class文件组成的jar包。jar就是一个压缩包,压缩包都是开发好的第三方(Oracle公司第一方,我们自己第二方,其他都是第三方)工具类,都是以class文件形式存在的。

3. 引入本地JUnit.jar

第1步:在项目中File-Project Structure中操作:添加Libraries库

其中,junit-libs包内容如下:

第2步:选择要在哪些module中应用JUnit库

第3步:检查是否应用成功

注意Scope:选择Compile,否则编译时,无法使用JUnit。

第4步:下次如果有新的模块要使用该libs库,这样操作即可

4. 编写和运行@Test单元测试方法

JUnit4版本,要求@Test标记的方法必须满足如下要求:

  • 所在的类必须是public的,非抽象的,包含唯一的无参构造器。

  • @Test标记的方法本身必须是public,非抽象的,非静态的,void无返回值,()无参数的。

import org.junit.Test;public class TestJUnit {@Testpublic void test01(){System.out.println("TestJUnit.test01");}@Testpublic void test02(){System.out.println("TestJUnit.test02");}@Testpublic void test03(){System.out.println("TestJUnit.test03");}
}

5. 设置执行JUnit用例时支持控制台输入

1. 设置数据:

默认情况下,在单元测试方法中使用Scanner时,并不能实现控制台数据的输入。需要做如下设置:

idea64.exe.vmoptions配置文件中加入下面一行设置,重启idea后生效。

-Deditable.java.test.console=true

2. 配置文件位置:

添加完成之后,重启IDEA即可。

3. 如果上述位置设置不成功,需要继续修改如下位置

修改位置1:IDEA安装目录的bin目录(例如:D:\develop_tools\IDEA\IntelliJ IDEA 2022.1.2\bin)下的idea64.exe.vmoptions文件。

修改位置2:C盘的用户目录C:\Users\用户名\AppData\Roaming\JetBrains\IntelliJIdea2022.1 下的idea64.exe.vmoptions`文件。

6. 定义test测试方法模板

选中自定义的模板组,点击”+”(1.Live Template)来定义模板。

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家点点收藏+关注 ~💕  

​ 

   更多专栏订阅推荐:

🥕 JavaScript深入研究

👍 前端工程搭建
💕 vue从基础到起飞

✈️ HTML5与CSS3

🖼️ JavaScript基础

⭐️ uniapp与微信小程序

📝 前端工作常见问题与避坑指南

✍️ GIS地图与大数据可视化

📚 常用组件库与实用工具

💡 java入门到实战 

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

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

相关文章

shell脚本宝藏仓库(基础命令、正则表达式、shell基础、变量、逻辑判断、函数、数组)

一、shell概述 1.1 shell是什么 Shell是一种脚本语言 脚本:本质是一个文件,文件里面存放的是特定格式的指令,系统可以使用脚本解析器、翻译或解析指令并执行(shell不需要编译) Shell既是应用程序又是一种脚本语言&…

C++中类间相互引用与析构函数调用的潜在风险及解决方案

C中类间相互引用与析构函数调用的潜在风险及解决方案 一、前言二、举例说明三、问题分析四、解决方案 一、前言 在C中,当两个类A和B之间存在相互引用,并且在A的析构函数中调用B的成员函数,同时B的成员函数又尝试访问A的对象或调用A的成员函数…

机器学习运维(MLOps)

机器学习运维(MLOps) 机器学习运维(Machine Learning Operations,简称MLOps)是一种将机器学习模型从开发到生产部署的系统方法,旨在缩短模型的开发周期,提高模型质量和可靠性。MLOps结合了DevO…

《深度学习》Dlib、OpenCV 轮廓绘制

目录 一、Dlib轮廓绘制 1、什么是轮廓绘制 2、步骤 1)导入所需的库和模型 2)加载人脸检测器 3)读取图像 4)人脸检测 5)关键点定位 6)绘制轮廓线条 7)展示结果 二、案例实现 1、完整代码 运…

《Spring Cloud 微服务:构建高效、灵活的分布式系统》

《Spring Cloud 微服务:构建高效、灵活的分布式系统》 一、引言 在当今快速发展的数字化时代,软件系统的规模和复杂性不断增加。为了应对这种挑战,微服务架构应运而生。Spring Cloud 作为构建微服务架构的强大工具集,提供了一系…

【华为】静态NAT、动态NAT、NAPT、Easy IP、NAT Server

静态 NAT:将内网主机的私网 IP地址一对一映射到公网 IP 地址。动态 NAT:将内网主机的私有地址转换为公网地址池里面的地址。由于静态NAT严格地一对一进行地址映射,这就导致即便内网主机长时间离线或者不发送数据时,与之对应的公有…

Mac 电脑安装redis

1、首先检查电脑是否安装 brew 命令: #打开Mac自带的终端,输入下面命令 brew --version如下图,可以看到我的 brew 正常的,且对应版本是4.0.17-63-g32f2258 如果你的电脑执行上面命名报错:zsh: command not found: br…

一个很恶心但发顶会很牛的方向!【小样本学习+目标检测】

【小样本学习目标检测】致力于通过有限的标注样本实现高效的目标检测,以应对数据匮乏的挑战。这一领域的研究对于缩小人工智能与人类学习系统之间的差异、增强模型对新类别的适应能力、推动智能识别系统在实际场景中的应用具有重要意义。 为了帮助研究人员深入理解…

【可答疑】基于51单片机的智能衣柜(含仿真、代码、报告、演示视频等)

✨哈喽大家好,这里是每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~ 🐱‍🐉这是51单片机毕业设计100篇…

多进程编辑

使用父子进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半&#xff0c;子进程拷贝后一半&#xff0c;两个进程同时进行 #include <myhead.h> int main(int argc, const char *argv[]) {//用于保存pid号pid_t pid -1;//创建子进程pid fork();//打印一下进程号print…

在vue中v-show不起作用

在vue中v-show不起作用 1、应用场景描述 表单分步骤提交&#xff0c;需要保存用户所填写过的信息&#xff0c;在点击上一步的时候&#xff0c;回显所填信息&#xff0c;所以不可以使用v-if来进行步骤切换&#xff0c;要使用v-show&#xff0c;但是当使用v-show的时候出现了另…

SpringBoot接收LocalDateTime参数

一、通过RequestBody接收 方式1&#xff1a;实体类上加上 JsonFormat&#xff0c;并通过 pattern 属性指定时间格式 public class Time {JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")LocalDateTime localDateTime;JsonFormat(pattern "yyyy-MM-dd")Loca…

C语言 | Leetcode C语言题解之第491题非递减子序列

题目&#xff1a; 题解&#xff1a; int** ans; int ansSize; int* temp; int tempSize;void dfs(int cur, int last, int* nums, int numsSize, int** returnColumnSizes) {if (cur numsSize) {if (tempSize > 2) {ans[ansSize] malloc(sizeof(int) * tempSize);memcpy(…

985研一学习日记 - 2024.10.16

一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部&#xff0c;明天练胸和三头 3、LeetCode刷了3题 旋转图像&#xff1a…

oracle归档日志爆满问题处理

最近客户单位的oracle数据库出了问题&#xff0c;经常出现无法连接,报错提示 ORA-00257: archiver error, Connect internal only, until freed.&#xff0c;手动清除归档日志后可以恢复访问&#xff0c;但是过不了几天依旧会爆满&#xff0c;每日生成的归档日志很大。经过详细…

(K)MP有限状态自动机

模式匹配自动机 什么是有限状态自动机&#xff1f; 定义 n 个不同状态&#xff0c;记为 {1,2…n}&#xff0c;在状态 i 时输入 s&#xff0c;达到状态 j&#xff0c;记为 goto (i,s)j 对于字符串 s 而言&#xff0c;在一个状态 i 下输入一个字符 ch&#xff0c;也会达到一个指…

ssh连接慢的问题或zookeeper远程连接服务超时

问题原因&#xff1a; 在SSH登录过程中&#xff0c;服务器会通过反向DNS查找客户端的主机名&#xff0c;然后与登录的IP地址进行匹配&#xff0c;以验证登录的合法性。如果客户端的IP没有域名或DNS服务器响应缓慢&#xff0c;这可能导致SSH登录过慢。为了解决这个问题&#xf…

尤雨溪都打赏的虚拟列表组件,到底有多强

尤雨溪都打赏的虚拟列表组件&#xff0c;到底有多强&#xff1f; 在前端开发中&#xff0c;性能优化永远是绕不开的主题。今天就带你看看 vue-virtual-scroller&#xff0c;一款让你滚动页面时流畅得像火箭一样的 Vue 组件。本文将简单介绍这个组件的主要功能、技术特点&#x…

理解和检测横向运动

希望对组织发起勒索软件攻击的威胁行为者能够使用被盗的凭据进入用户的电子邮件帐户。利用鱼叉式网络钓鱼技术和侦察&#xff0c;威胁行为者向 IT 部门发送电子邮件&#xff0c;要求提供重要网络应用程序的凭据。他们获得凭据&#xff0c;深入网络&#xff0c;并开始发起勒索软…

JavaWeb合集07-MyBatis

七、MyBatis MyBatis是一款优秀的持久层&#xff08;dao&#xff09;框架&#xff0c;用于简化JDBC的开发。 MyBatis本是Apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 官网&#xff1a;https://mybati…