Junit——白盒测试

Java单元测试框架,主要用于测试Java程序中的各个单元。

1.验证代码功能是否符合预期

2.及时 发现+修复 代码中的缺陷,提高代码质量

入门

最早学习java,代码对不对,通过main 方法运行,观看结果是否符合预期

package hello;public class ArithTestUtil{public static void main(String[] args) {int result = add(1,2);System.out.println(result);}// 重载加法方法 - 两个整数加法  Apublic static int add(int i, int j) {return i+j;}// 重载加法方法 - 两个浮点数加法   Bpublic static double add(double a, double b) {return a + b;}// 重载加法方法 - 三个整数加法  Cpublic static int add(int a, int b, int c) {return a + b + c;}
}

但是问题来了,我的add方法  A 参数l两个,以后需要浮点方法B ,三个参数方法C ,怎么测试,

        还是要写到main方法中,以后很多方法情况下 结果对不对要一一对应查看,肉眼久了不废了吗。这时候 使用junit 测试框架来进行测试工作

任何开发都是先导包   junit-4.9.jar【以后学到springboot才能解脱】

package hello;import org.junit.Test;import junit.framework.Assert;public class ArtichTestUtilTest{@Testpublic void testAdd() {int result = ArithTestUtil.add(1, 2);Assert.assertEquals(result, 3);}@Testpublic void testAdd2() {int result = ArithTestUtil.add(1, 2,,3);Assert.assertEquals(result, 5);}@Testpublic void testAdd3() {doubleresult = ArithTestUtil.add(1.5, 2.3);Assert.assertEquals(result, 3.8);}}

鼠标在方法上,右键运行对应的测试方法。在类上,可运行该类中所有的测试方法。

注意:运行成功显示绿色,失败显示红色 +提示你的代码 类名+ 错误的代码行号

eclipse 类似这样

idea 类似这样  图只是参考,实际测试时 数值 或调用方法随意写的

junit的好处

        对比前面所说,测试放到main方法中。用juint后,发现:
1.新增的测试,对原测试不影响 

2.此时失败,会变化立马看出来结果\效果

相关注解

  • 测试类:使用 @Test 注解标记的类。
  • 测试方法:使用 @Test 注解标记的方法,用于执行具体的测试。
  • 断言:使用 JUnit 提供的断言方法(如 assertEqualsassertTrue 等)来验证测试结果。

========================================================================

  • @Test:标记测试方法。
  • @Before 和 @After:分别在测试方法之前和之后执行操作。
  • @BeforeEach 和 @AfterEach:分别在每个测试方法之前和之后执行操作。 JUnit 5
  • @BeforeAll 和 @AfterAll:分别在所有测试方法之前和之后执行操作。 JUnit 5
  • @BeforeClass 必须是 static 方法 / /只在所有测试方法之前执行一次

会发现有的注解 的作用一样啊。包不一样,列出说明学会一种,另一种方法调用照葫芦画瓢即可。

TestSuite

之前案例中只有一个 测试类 ArtichTestUtilTest。往后多测试类如 Test1,Test2 ...,开发者手动去挨个点击执行 ,比较麻烦。

//在 JUnit 4 中,使用 @RunWith 和 @Suite.SuiteClasses 来定义测试套件@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class MyTestSuite {// 测试套件运行时,TestClass1 和 TestClass2 中的所有测试都会被执行// MyTestSuite 本身不含任何测试方法,测试方法来自于 TestClass1 TestClass2
}//JUnit 5 中的 Test Suite 用法
@Suite
@SelectClasses({TestClass1.class, TestClass2.class})  // 选择特定的测试类
public class MyTestSuite {// 这个类本身不包含任何测试方法,所有的测试都来自于 TestClass1 和 TestClass2
}@Suite
@SelectPackages("com.hello.tests")  // 选择整个包中的所有测试类
public class MyTestSuite {// 不需要测试方法,所有的测试都来自 com.hello.tests 包
}

maven项目使用

对比前面的独立jar包,现在maven里如何使用

1.pom.xml中加上引用包

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>

2.同上

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

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

相关文章

1.MySQL概述

1.1 数据模型 介绍完了Mysql数据库的安装配置之后&#xff0c;接下来我们再来聊一聊Mysql当中的数据模型。学完了这一小节之后&#xff0c;我们就能够知道在Mysql数据库当中到底是如何来存储和管理数据的。 在介绍 Mysql的数据模型之前&#xff0c;需要先了解一个概念&#x…

Deep seek学习日记1

Deepseek最强大的就是它的深度思考&#xff0c;并且展现了它的思考过程。 五种可使用Deep seek的方式&#xff08;应该不限于这五种&#xff0c;后续嵌入deepseek的应该更多&#xff0c;多了解一点因为官网容易崩~~&#xff09;&#xff1a; 1.deep seek官网 2.硅基流动silicon…

JAVA中的异常

一、简介 1.1 什么是异常 异常&#xff0c;是对程序在运行过程中遇到的种种不正常的情况的描述。异常在java中用Exception类来描述。如果程序遇到了未经处理的异常&#xff0c;将会导致程序无法编译或者无法继续运行。 1.2 异常的继承体系 在java中使用类Throwable来描述所有…

数字水印嵌入及提取系统——基于小波变换GUI

数字水印嵌入及提取系统——基于小波变换GUI 基于小波变换的数字水印系统&#xff08;Matlab代码GUI操作&#xff09; 【有简洁程序报告】【可作開题完整文档达辩PPT】 本系统主要的内容包括&#xff1a; &#xff08;1&#xff09;使用小波变换技术实现二值水印图像的加密、…

Linux_帮助指令

man 获得帮助信息 基本语法: man [命令或配置文件] 在linux下,隐藏文件是以 .开头, 选项可以组合使用, 比如 ls -al, 不如 ls -al /root help 指令 基本语法: help 命令 (功能描述: 获取shell内置命名的帮助信息) 英语不好建议百度

Day4 25/2/17 MON

【一周刷爆LeetCode&#xff0c;算法大神左神&#xff08;左程云&#xff09;耗时100天打造算法与数据结构基础到高级全家桶教程&#xff0c;直击BTAJ等一线大厂必问算法面试题真题详解&#xff08;马士兵&#xff09;】https://www.bilibili.com/video/BV13g41157hK?p4&v…

redis集群模式

1.集群模式 作用&#xff1a;解决单点故障问题 集群的模式&#xff1a;1.主从模式&#xff0c;2、哨兵模式&#xff0c;3、集群化模式 1.1主从模式 特点&#xff1a;1个主节点多个从节点&#xff0c;主节点负责读写操作&#xff0c;而从节点只能负责读操作&#xff0c;当主…

力扣 乘积最大子数组

动态规划&#xff0c;注意负负得正&#xff0c;dp交换。 题目 注意这里的dp的乘积要求最大&#xff0c;而两个很大的负数相乘也是大的&#xff0c;因此在每遍历到一个数时要存一个最大值的dp与一个最小值的dp&#xff0c;然后遍历完后再去存ans的dp。由于存在负数&#xff0c;…

【Postgresql】Windows 部署 Postgresql 数据库 (图文教程)

文章目录 准备工作Postgresql 下载Postgresql 安装初始化数据库数据库链接设置允许远程连接测试链接 更多相关内容可查看 准备工作 操作系统&#xff1a;Windows 7 或更高版本&#xff08;推荐 Windows 10 或 Windows Server 2016&#xff09;。 硬件要求&#xff1a; 至少 …

【ENSP】链路聚合的两种模式

【ENSP】链路聚合的两种模式 1、背景介绍2、链路聚合的使用场景3、配置过程1、手工模式Eth-Trunk配置2、静态LACP模式Eth-Trunk 4、总结 1、背景介绍 随着网络规模的不断扩大&#xff0c;人们对骨干链路的带宽吞吐量和可靠性提出了越来越高的要求。在传统方案中&#xff0c;为…

《深度学习》——调整学习率和保存使用最优模型

调整学习率 在使用 PyTorch 进行深度学习训练时&#xff0c;调整学习率是一个重要的技巧&#xff0c;合适的学习率调整策略可以帮助模型更好地收敛。 PyTorch 提供了多种调整学习率的方法&#xff0c;下面将详细介绍几种常见的学习率调整策略及实例代码&#xff1a; torch.opt…

SpringBoot+微信小程序+数据可视化的宠物到家喂宠服务(程序+论文+讲解+安装+调试+售后等)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在经济高速发展、物质生活极大丰富的当下&#xff0c;人们的精神需求愈发凸显&#xff0…

《仙台有树》追剧疑问与DeepSeek解答

本篇形式&#xff1a;直接以两段对话直接呈现&#xff0c;有删减 本篇背景&#xff1a;看过太多逻辑bug&#xff0c;有些bug无药可救直接弃剧&#xff0c;有些bug情有可原包容理解。想到最近大火的DeepSeek&#xff0c;就与时俱进&#xff0c;简单直接点吧&#xff0c;也许自己…

Java版企业电子招标采购系统源业码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

txt文件批量转PDF

需要使用acrobat DC软件。 工具 – 创建 PDF – 多个文件&#xff08;可以选择多个TXT文件&#xff0c;过多可能内存溢出&#xff09;。

学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统

这应该算 stm32裸机用户 转 linux嵌入式系统 的入门学习笔记。 【鲁班猫】39-vnc远程桌面连接鲁班猫_哔哩哔哩_bilibili 本集的鲁班猫的视频介绍中&#xff0c;没有清晰明确指出需要linux开发板接入网络&#xff0c;接入网络可以使用有线网口或者wifi路由&#xff0c;有些提示…

PVE使用一个物理网卡采用VLAN为管理IP和VM分配网络的问题

问题描述&#xff1a; 部署PVE后&#xff0c; 想着在上面部署多个不同VLAN的VM &#xff08;类似于VMwarere ESXi&#xff09;&#xff0c;但有人反馈无法使用VLAN&#xff0c;只能配置部署PVE时使用的网段。 问题分析&#xff1a; 在PVE的主机节点网络配置中&#xff0c;默认…

15.3.10 窗体下使用多线程

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 从.Net FrameWork2.0开始&#xff0c;为了加强了程序安全&#xff0c;防止跨线程调用导致不可预知的结果。微软将窗体主线程&#x…

ASP.NET Core SixLabors.ImageSharp v3.x 的图像实用程序类

使用用 C# 编写的 asp.net core web 应用程序示例在 Windows 和 Linux web 服务器上处理图像&#xff0c;包括创建散点图和直方图&#xff0c;以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包&#xff08;版本 3.1.x&#xff09;添…

【leetcode】200.岛屿数量(DFS入门)

实战总结 用char型接收整形int转化为的对应字符要小心 int res; char res 0; 其中 res 的上限是127。 在下面这道题中&#xff0c;笔者一开始想将遍历过的位置更新值为 res ‘0’&#xff0c;但当岛屿数过多的时候就溢出了&#xff0c;所以还是应该将遍历过的位置更新为‘…