java单元测试
版本区别
| 特性 | Junit 4 | Junit 5 |
|---|---|---|
| 在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。 | @BeforeClass | @BeforeAll |
| 在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。 | @AfterClass | @AfterAll |
| 在每个测试方法之前执行。注解在非静态方法上。可以重新初始化测试方法所需要使用的类的某些属性。 | @Before | @BeforeEach |
| 在每个测试方法之后执行。注解在非静态方法上。可以回滚测试方法引起的数据库修改。 | @After | @AfterEach |
测试注解的作用
@RunWith(SpringRunner.class)
@org.springframework.boot.test.context.SpringBootTest
@ContextConfiguration(classes = MyCommunityApplication.class)
public class SpringBootTest {@Autowiredprivate DiscussPostService discussPostService;private DiscussPost data;@BeforeClasspublic static void beforeAll() {System.out.println("beforeClass");}@AfterClasspublic static void afterAll() {System.out.println("afterClass");}@Beforepublic void before() {System.out.println("before");}@Afterpublic void after() {System.out.println("after");}@Testpublic void test1(){System.out.println("test1");}@Testpublic void test2(){System.out.println("test2");}
}
执行test1,可以看到

打印的顺序是beforeClass、before、test1、after、afterClass,这也是。
一般单元测试是直接运行整个测试类,然后查看哪个测试方法有错误,如:

全部通过:

实际项目的样例
@RunWith(SpringRunner.class)
@org.springframework.boot.test.context.SpringBootTest
@ContextConfiguration(classes = MyCommunityApplication.class)
public class SpringBootTest {@Autowiredprivate DiscussPostService discussPostService;private DiscussPost data;@BeforeClasspublic static void beforeAll() {System.out.println("beforeClass");}@AfterClasspublic static void afterAll() {System.out.println("afterClass");}@Beforepublic void before() {System.out.println("before");// initializedata = new DiscussPost();data.setUserId(111);data.setId(287);data.setTitle("Test title");data.setContent("Test content");data.setCreateTime(new Date());discussPostService.addDiscussPost(data);System.out.println(data.getId());}@Afterpublic void after() {System.out.println("after");// deletediscussPostService.updateStatus(data.getId(), 2);}@Testpublic void testFindById(){DiscussPost discussPost = discussPostService.findDiscussPostById(data.getId());Assert.assertNotNull(discussPost);Assert.assertEquals(discussPost.getTitle(), data.getTitle());Assert.assertEquals(discussPost.getContent(), data.getContent());}@Testpublic void testUpdateScore() {int rows = discussPostService.updateScore(data.getId(), 2000.00);Assert.assertEquals(1, rows);DiscussPost post = discussPostService.findDiscussPostById(data.getId());Assert.assertEquals(2000.00, post.getScore(), 2);}
}
测试未通过:

相关文章:
java单元测试
版本区别 特性Junit 4Junit 5在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。BeforeClassBeforeAll在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。AfterClassAfterAll在每个测试方法之前执行。注解在…...
【LeetCode】双指针求解和为s的两个数字
Problem: 剑指 Offer 57. 和为s的两个数字 文章目录 题目解析算法思路分析复杂度Code 题目解析 首先来讲解一下本题的思路 我们看到本题的意思很简单,就是去这个nums这个数组中进行寻找,如果找到了两个数相加之和为target的话,那构成一个结果…...
opencv识别一张图片的多个红框,并截取红框的内容
需求 需要获取图片的红框的内容,实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…...
数据库-事务
介绍: 事务是一组操作的集合,它是一个不可分割的工作单位,事物会把所有的操作作为一个整体一起向系统 提交或撤销操作请求,即这些操作要么同时成功,要么同时失败 操作:事务控制 开启事务:start…...
MySQL 使用开源审计插件
文章目录 前言1. 审计插件下载2. 审计插件参数2.1 server_audit_events2.2 server_audit_excl_users2.3 server_audit_output_type2.4 server_audit_file_path2.5 server_audit_file_rotate_now2.6 server_audit_file_rotate_size2.7 server_audit_file_rotations2.8 server_au…...
Python入门教程 | Python3 集合(Set)
Python3 集合(Set) 集合(set)是一个无序的不重复元素序列。 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或…...
视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0
开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…...
【C++模拟实现】反向迭代器的实现
【C模拟实现】反向迭代器的实现 目录 【C模拟实现】反向迭代器的实现反向迭代器的代码示例反向迭代器的模拟实现要点引入iterator模版参数rbegin()和rend()的实现 作者:爱写代码的刚子 时间:2023.9.5 前言:本篇博客主要介绍反向迭代器的实现&…...
Kubernetes技术--k8s核心技术持久化存储
有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…...
【80天学习完《深入理解计算机系统》】第十四天 复习第三章
专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示&#…...
库中是如何实现string类的?
🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 …...
无涯教程-JavaScript - WORKDAY.INTL函数
描述 WORKDAY.INTL函数返回带有自定义周末参数的指定工作日数之前或之后的日期的序列号。周末参数指示哪些和多少天是周末。周末和指定为假期的任何日子均不视为工作日。 语法 WORKDAY.INTL (start_date, days, [weekend], [holidays])争论 Argument描述Required/OptionalS…...
STM32--蓝牙
本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制 简介 蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信。它是由爱立信(Ericsson)公司在1994年推出的,以取代…...
java 实现原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,它允许创建对象的副本,而无需暴露对象的创建细节。在Java中,原型模式通常通过克隆对象来实现。要实现原型模式,需要满足以下条件: 被克隆的对…...
maven本地安装jar包install-file,解决没有pom的问题
背景: 公司因为权限问题,没有所有的代码,内部maven还在搭建,所以需要拿到同事的jar包,本地install: mvn install:install-file -DgroupIdcom..framework -DartifactIdcloud-api -Dversion1.0.0-SNAPSHOT …...
【C++学习笔记】5、变量作用域
文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称…...
Python中的装饰器
迷途小书童的 Note 读完需要 5分钟 速读仅需 2 分钟 装饰器是一个非常有用而又常被误解的功能,可以让我们在不修改函数或类的源代码情况下给它们提供扩展功能。本文将通过具体示例带你深入理解 Python 装饰器的用法。 1 装饰器基础 装饰器本质上是一个函数ÿ…...
什么是RESTful API,Spring MVC如何支持RESTful架构
文章目录 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:Java框架 ✨文章内容:Spring MVC支持RESTful架构 🤝希望作者的文章能对你有所帮助…...
cin、cin.getline()、getline()的用法【C++】
一、cin>> 用法1:输入一个数字或字符 #include <iostream> using namespace std; int main () {int a,b;cin>>a>>b;cout<<ab<<endl;return 0; } 用法2:接收一个字符串,遇“空格”、“TAB”、“回车”…...
单向链表(c/c++)
链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节…...
软件测试的V模型竟然是有争议的?——软件测评师题目拆解
不知道有多少同学在这个简单的题目栽过跟头,国内、国外对于V模型的定义是有出入的(习题在文末十二五规划教材《软件测试(第2版)佟伟光 主编》 一书中给出的V模型QT官方对应V模型的定义是这样的等级考试用书《软件测评师教程》第二…...
深入解析SSD的FTL:从LBA到PBA的映射机制与优化策略
1. 为什么需要FTL:SSD的"翻译官"工作原理 当你把文件保存到SSD时,操作系统只需要告诉SSD"把数据存到LBA 1234地址",完全不用关心数据实际存放在闪存芯片的哪个物理位置。这个神奇的能力全靠**FTL(闪存转换层&…...
ROS小车仿真进阶:手把手教你用URDF和Xacro为阿克曼转向车‘造轮子’
ROS阿克曼转向车仿真实战:从URDF建模到Gazebo调试全解析 当你在Gazebo中第一次看到自己搭建的阿克曼转向车完美执行转弯指令时,那种成就感堪比看着孩子学会骑自行车。作为ROS开发者,掌握URDF/Xacro建模技术就像获得了一把打开机器人世界的万能…...
告别重复造轮子:用快马ai一键生成代码管理工具提升效率
作为一个经常需要复用代码片段的开发者,我最近发现了一个能显著提升工作效率的方法——用InsCode(快马)平台快速生成代码管理工具。这个方案完美解决了我在日常开发中遇到的三个痛点: 重复代码难管理:每次遇到相似功能都要翻历史项目或重新搜…...
毕业设计实战:基于SpringBoot的网购平台管理系统设计与实现全攻略
毕业设计实战:基于SpringBoot的网购平台管理系统设计与实现全攻略 在开发“基于SpringBoot的网购平台管理系统”毕业设计时,曾因“订单状态与库存管理脱节”踩过关键坑——初期未设计清晰的订单状态机和库存联动机制,导致用户下单后库存未及时…...
如何在广告泛滥的时代找到纯粹的音乐净土?铜钟音乐的极简听歌方案
如何在广告泛滥的时代找到纯粹的音乐净土?铜钟音乐的极简听歌方案 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特!(密码重置功能已回归) 项目地址: https://gitcode.com/Gi…...
Z-Image-GGUF完整教程:阿里通义文生图模型从安装到出图
Z-Image-GGUF完整教程:阿里通义文生图模型从安装到出图 你是不是也想过,要是能用几句话就让电脑画出你想象中的画面,那该多酷?比如,你想看“樱花树下的古寺,夕阳西下,电影感十足”,…...
Umi-OCR性能调优实战指南:老旧系统文字识别效率提升方案
Umi-OCR性能调优实战指南:老旧系统文字识别效率提升方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/Gi…...
别再傻傻分不清了!AUTOSAR里那三种接口到底怎么用?
AUTOSAR接口全解析:从快递员到内部电话的通信哲学 刚接触AUTOSAR的工程师们,面对琳琅满目的接口类型时,是否常有种"明明每个字都认识,连起来却看不懂"的困惑?就像第一次走进高级餐厅,面对三种看…...
Nunchaku-flux-1-dev一键部署教程:Ubuntu20.04环境配置
Nunchaku-flux-1-dev一键部署教程:Ubuntu20.04环境配置 1. 开篇:为什么选择这个部署方案 如果你刚接触Linux环境下的模型部署,可能会觉得配置各种依赖和环境变量很头疼。Nunchaku-flux-1-dev作为一个功能强大的模型,其实在Ubunt…...
