java | junit | 基本+技巧

news/2024/5/3 5:37:54

1.参考链接
1.1 单测概念
https://medium.com/@lathasreeseeni/junit-2d9857773e8
1.2 高级技巧
https://symflower.com/en/company/blog/2023/how-to-write-junit-test-cases-advanced-techniques/

  • assertThrows:
    有时候,我们的方法,需要抛出错误。例如,deleTask(id) 中,id不存在的时候,需要抛错。那么在单测中,就可以用assertThrows。
  • @ParameterizedTest:
    场景:多个不同输入对应的结果
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;public class CalculatorTest {@ParameterizedTest@CsvSource({"1, 2, 3","0, 0, 0","-1, 1, 0","100, -100, 0"})void testAdd(int a, int b, int expected) {Calculator calculator = new Calculator();int result = calculator.add(a, b);assertEquals(expected, result);}
}
  • assumeTrue(condition)
    condition正确再执行下面的语句

-assumeFalse
condition错误再执行下面的语句,也就是说,condition为true则不会执行下面的语句。

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assume.assumeTrue;public class MyTest {@Testpublic void testAdd() {assumeTrue(2 + 2 == 4);// ↑2+2=4这个假设是正确的,执行↓ assertEquals(4, Calculator.add(2, 2));}}
  • @Parameterized.Parameters
    构造多个参数,可以是对象的参数
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;import java.util.Arrays;
import java.util.Collection;import static org.junit.Assert.assertEquals;@RunWith(Parameterized.class)
public class CalculatorTest {private int a, b, expected;public CalculatorTest(int a, int b, int expected) {this.a = a;this.b = b;this.expected = expected;}@Parameterized.Parameterspublic static Collection<Object[]> data() {return Arrays.asList(new Object[][]{{1, 1, 2},{2, 3, 5},{5, 5, 10},{10, 0, 10},{-5, 5, 0}});}@Testpublic void testAdd() {Calculator calculator = new Calculator();int result = calculator.add(a, b);assertEquals(expected, result);}
}

http://www.mrgr.cn/p/71180521

相关文章

基于face_recognition实现的人脸识别功能

环境Python 3.11.8 dlib == 19.24.4 opencv-python == 4.9.0.80 numpy == 1.26.4 face_recognition == 1.3.0通过本地图片采集人脸编码 import os import cv2 import face_recognition encode_list = [] image_field_path = os.path.join(., images) images_file_list = os.lis…

Spring Boot 目前还是最先进的吗?

当谈到现代Java开发框架时&#xff0c;Spring Boot一直处于领先地位。它目前不仅是最先进的&#xff0c;而且在Java生态系统中拥有着巨大的影响力。 1. 什么是Spring Boot&#xff1f; Spring Boot是由Spring团队开发的开源框架&#xff0c;旨在简化基于Spring的应用程序的开…

4.10 + (double)(rand()%10)/100.0

机房是我家黑色星期四 坏消息: 没有奥赛课,所以大概率调不出来 CF1479D 好消息: 5k 回来了,调题有望 🥰 中午起床直接来的机房,有学科自习就说我不知道 结果被叫回去了 😢 而且今天班里没水了,趁着大课间跑操又去了一趟机房,赢 奥赛大会 老规矩颁奖典礼打头 不一样的…

RAG 2.0架构详解:构建端到端检索增强生成系统

关于检索增强生成(RAG)的文章已经有很多了,如果我们能创建出可训练的检索器,或者说整个RAG可以像微调大型语言模型(LLM)那样定制化的话,那肯定能够获得更好的结果。但是当前RAG的问题在于各个子模块之间并没有完全协调,就像一个缝合怪一样,虽然能够工作但各部分并不和…

东方博宜 1157. 最小数

东方博宜 1157. 最小数 今天不想写思路&#xff0c;乱糟糟的&#xff0c;能运行就拉倒了 #include <iostream> using namespace std; int main() {int n ;int a[201] ;cin >> n ;for(int i 1 ; i < n ; i){cin >> a[i] ; } int j ;j 1 ;for(int i 1…

Java对接第三方接口C#语言 请求是xml格式方式

文章目录 目录 文章目录 安装流程 小结 概要写法流程技术细节小结 概要 实现方式通过标签方式获取一个Body内标签的信息一步一步解析到需要获取到的数据信息 写法流程 技术细节 先和对面对接项目的开发拿到postman接口数据信息&#xff0c;然后再本地跑通接口&#xff0c;再进…

荣誉

荣誉 个人 学习委员 国防教育先锋队 朋辈导师 优秀团员 省级三好学生 职业技能大赛网络安全 河南省第七届御网杯信息安全大赛三等奖第二十届全国大学生信息安全对抗技术竞赛 ​ 数通 H3C认证路由交换网络工程师.pdf H3CSE-RS-IPv6.pdf 华为ICT网络赛道三等奖华为 HarmonyOS应用…

Windows10中多屏显示器型号获取并与Screen对应

需求:标识某块屏,不参与窗口快速移动 @@@codepublic class Monitor{/// <summary>/// DeviceID,如: \\.\DISPLAY17/// </summary>public String DeviceName { get; set; } /// <summary>/// 名称,如: Default_Monitor/// </summary>public…

制作适用于openstack平台的win10镜像

1. 安装准备 从MSDN下载windows 10的镜像虚拟机开启CPU虚拟化的功能。从Fedora 网站下载已签名的 VirtIO 驱动程序 ISO 。 创建15 GB 的 qcow2 镜像&#xff1a;qemu-img create -f qcow2 win10.qcow2 15G 安装必要的软件 yum install qemu-kvm qemu-img virt-manager libvir…

ubuntu20 解决网线不能联网 RTL8111/8168/8411

这种问题一般是驱动没有正确安装。 ----RTL8111/8168/8411是一块比较坑的网卡。 1、 查看网卡信息 lspci |grep Ethernet2、 对于高版本的Ubuntu&#xff0c;能直接使用命令安装驱动。下面的r8168-dkms需根据网卡信息修改&#xff0c;上面的网卡信息还有8111&#xff0c;但逐个…

【云原生】Spring Cloud微服务学习路线汇总

【云原生】Spring Cloud微服务学习路线汇总Spring Cloud是什么?简单来说Spring Cloud是一系列框架的组成集合。主要利用的我们现在主流应用的Spring Boot框架开发便利性、巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监…

ROS笔记5--动作通讯

1、动作通讯简介 机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。 从这个名字上就可以很好理解这个概…

c# 中 dataGridView控件 显示水平滚动条

1. 最主要的在dataGridView控件属性中的ScrollBars是否设为BothBoth代表水平和垂直方向根据实际需求自动显示滚动条None 代表水平和垂直都不显示滚动条Vertical 代表只垂直显示滚动条Horizontal 代表只水平显示滚动条 2.检查表格中每个列的属性,看 Frozen 应设置为 false 如果…

Kubernetes(k8s)与docker的区别

Kubernetes(k8s)与docker的区别k8s与docker的区别Kubernetes (通常简称为"k8s") 和 Docker 是两个不同的技术,它们在容器化应用程序方面扮演着不同的角色。Docker 是一种开源的容器化技术,它允许应用程序在一个独立、可移植的容器中运行。容器化是一种将应用程序…

vue框架中的路由

vue框架中的路由 一.VueRouter的使用&#xff08;52&#xff09;二.路由模块封装三.声明式导航 - 导航链接1.router-link-active类名2.router-link-exact-active类名3.声明式导航-自定义类名 四.查询参数传参五.动态路由传参方式查询参数传参 VS 动态路由传参 六.动态路由参数的…

VKL144C/D LQFP48/SSOP48仪器仪表超低功耗/超省电LCD液晶段码驱动IC适用于分贝仪、测光仪、测厚仪可驱动36SEGx4COM

VKL144C/D概述: VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的 LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通 过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表 类产…

196. 删除重复的电子邮箱【Problem:Every derived table must have its own alias】

SQL-Boy上线,最近在写SQL语句遇到了这样的问题。 Problem:Every derived table must have its own alias 错误语句如下 delete from Person where id not in (select id from (select min(id) as idfrom Person group by email));百度一波 【mysql解决方案】ERROR 1248 (4200…

[Python开发问题] Selenium ERROR: Unable to find a matching set of capabilities

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Occ求点到直线的距离

计算一个点到2d基本曲线的距离使用这个类Extrema_ExtPElC2d。距离可以是最小或者最大。 Extrema是极值的意思,P是point点,ELC是elementary curve基本曲线。点到直线的距离 假设一个点 Y 和一条直线 L直线 L 的参数形式为 $ X(t) = P + t\overrightarrow{d} $ // 式11. 先求…

vscode使用PasteImage插入图片

vscode使用PasteImage插入图片 需求 在vscode中写Markdown文件,经常需要插入图片,使用插件Paste Image进行简单配置后,就可以方便插入图片并自动存放到相应路径的文件夹中 安装及配置 安装从扩展商店搜索Paste Image并安装即可配置vscode设置中搜索Paste Image,找到Paste I…