Springboot项目的测试类书写(速通)

news2025/1/11 4:18:57

目录

  • 前言
  • 1. 单元测试的测试类
  • 2. 框架测试的测试类

前言

在实际开发中,如果只是做一个简单的单元测试(不涉及端到端、数据库交互、API调用、消息队列处理等),我为了方便一般都是找块儿地方写一个main方法来跑一下就行了,当然不推荐这样做,怕被领导发现 。所以还是建议在 /src/test/xxx/ 目录下写一个测试类来做测试。

1. 单元测试的测试类

如果只是为了做一个单元测试,比如说测试一个方法是否能正常跑,那么可以按照以下流程创建一个:

  1. maven依赖

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    
  2. 测试类

    import org.junit.Test;
    
    public class MyTest {
        @Test
        public void test() {
            long l = System.currentTimeMillis();
            System.out.println(l);
        }
    }
    

要求:

  1. 测试类中的方法需要加上@Test
  2. 访问修饰符必须是public,返回类型必须是void
  3. 不接受任何参数(JUnit5可以用@ParameterizedTest来实现参数化测试,但是很麻烦);
  4. 可用expected来标注需要捕获的异常@Test(expected = ExceptionType.class)

2. 框架测试的测试类

如果需要启动所有上下文进行测试,那么在测试类上面加一个@SpringBootTest就行了,接着就可以使用Bean做测试了,如下:

@SpringBootTest
public class ConfEncTest {
    @Autowired
    private StringEncryptor jasyptStringEncryptor;
	
	@Test
	public void encryptTest() {
		String originPassord = "123456";
        String encryptStr = jasyptStringEncryptor.encrypt( originPassord );
        System.out.println(encryptStr);
    }
 }

@SpringBootTest:启动一个全功能的Spring Boot应用上下文来进行集成测试,可以使用所有的Bean。启动一个测试方法就相当于启动整个项目,比较慢。

如果只是使用几个Bean,那么可以使用 @RunWith(SpringRunner.class) + @ContextConfiguration

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {StringEncryptor.class})
public class ConfEncTest {
    @Autowired
    private StringEncryptor jasyptStringEncryptor;
	
	@Test
	public void encryptTest() {
		String originPassord = "123456";
        String encryptStr = jasyptStringEncryptor.encrypt( originPassord );
        System.out.println(encryptStr);
    }
 }

@RunWith:用于指定运行测试类的测试运行器(Test Runner),需要搭配@ContextConfiguration使用。

SpringRunner: Spring提供的一个特殊的测试运行器,它负责解析@SpringBootTest、@ContextConfiguration等Spring相关的注解,并在测试执行前创建和配置Spring应用上下文。

@ContextConfiguration:指定包含所需Bean定义的配置类或XML配置文件。这样,SpringRunner在运行测试时,会根据@ContextConfiguration提供的信息来创建一个包含必要Bean的ApplicationContext,从而实现对这些依赖的注入。如果需要同时指定多个类可以这样写:@ContextConfiguration(classes = {ConfigA.class, ConfigB.class, ConfigC.class})。

@SpringBootTest是一个复合注解,其中包含了@RunWith。

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

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

相关文章

这些年背过的面试题--MySQL篇

MySQL一直是面试中的热点问题&#xff0c;也难道了很多的面试者。其实MySQL没那么难&#xff0c;只是大家没有系统化、实战性的过去学习、总结。同时很多开发者在实际的开发过程中也很少去接触一些偏向底层的知识。 本手册&#xff0c;已总结成完整的PDF文档。想获取该文档&am…

C++继承(全)

目录 继承 1.继承定义 2.继承方式和访问限定符 3.继承基类成员后&#xff0c;派生类相应的访问方式的变化 4.基类和派生类的对象赋值转换 1.切片或切割 2.赋值兼容 5.作用域 6.隐藏/重定义 派生类的默认成员函数 1.构造函数 2.拷贝构造函数 3.赋值运算符重载 4.析…

怎么查苹果手机激活时间?立即get这3个方法

苹果手机的激活时间能帮助我们了解手机的购买时间和使用历史&#xff0c;对于二手交易也是一个重要的参考。然而&#xff0c;许多人可能不知道如何查看手机的激活时间。怎么查苹果手机激活时间&#xff1f;在本文中&#xff0c;我们将介绍三种简单而有效的方法&#xff0c;让您…

ros1 C++ 输出helloworld

1、创建工作空间并初始化 mkdir -p 自定义空间名称/src cd 自定义空间名称 catkin_make运行完&#xff0c;生成文件如下图&#xff1a; 2、进入 src 创建 ros 包并添加依赖 cd src catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs这里&#xff0c;我的自定义ROS包名…

回归预测 | Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量…

现在开自助棋牌室,小心租房“陷阱”

之前分享了开自助棋牌室的市场调研流程&#xff0c;那就顺着开店步骤&#xff0c;我将每个环节细化干什么&#xff0c;做成笔记分享给小伙伴们&#xff01; 棋牌室大家在租房的时候&#xff0c;一定要注意以下这些地方&#xff0c;都是我们开了2家店之后&#xff0c;总结的血泪…

刚找到工作,碰到新项目,怎么入手?

之前有特训营老铁说&#xff0c;刚找到工作&#xff0c;碰到了新项目&#xff0c;没有头绪&#xff0c;该怎么入手&#xff1f; 10几年前&#xff0c;我刚入职单片机开发时&#xff0c;也慌得一批&#xff0c;在此之前&#xff0c;我只懂51单片机&#xff0c;玩过智能小车。 好…

SQLAIchemy 异步DBManager封装-01入门理解

前言 SQLAlchemy 是一个强大的 Python SQL 工具包和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;是业内比较流行的ORM&#xff0c;设计非常优雅。随着其2.0版本的发布&#xff0c;SQLAlchemy 引入了原生的异步支持&#xff0c;这极大地增强了其在处理高并发和异步…

codeforce #925 (div3) 题解

D. Divisible Pairs 给出数组 a a a&#xff0c;如果二元组 ( i , j ) (i,j) (i,j)满足 a i a j m o d x 0 & & a i − a j m o d y 0 a_i a_j mod x 0 \&\& a_i - a_j mod y 0 ai​aj​modx0&&ai​−aj​mody0&#xff0c;则beauty。其中 i &…

阿里云服务器项目部署docker-compose+vue+redis+nginx+minio+springboot

1 阿里云服务器项目部署-单机部署 docker-compose 1.1 搭建背景 服务器 阿里云服务器 前端 vue 后端 springboot 服务 redis 、nginx、minio 都做单机模式部署,不做集群部署 博客内容参考了其他博文&#xff0c;会贴出来 1.2 <重要>端口开放前提说明 任何开放的端…

2024年华中杯数学建模竞赛全攻略:ABC题思路解析+代码实现+数据集+论文撰写+全程答疑

引言 &#xff08;比赛后所有题目资料在文末获取呀&#xff09; 华中杯数学建模竞赛是数学建模领域的一项重要赛事&#xff0c;它不仅考验参赛者的数学建模能力&#xff0c;还考验了编程技能、数据分析能力和论文撰写能力。为了帮助参赛者更好地准备2024年的竞赛&#xff0c;本…

编程填空题:麻烦的位运算

闲着没事干可以做做 可以看到&#xff0c;那个函数直接return了&#xff0c;也就是说&#xff0c;得找到一个表达式&#xff0c;直接求出结果 简单分析一下&#xff1a; 其第i位为1当且仅当n的右边i位均为1 也就是说&#xff0c;前i-1位有0&#xff0c;第i位就是0 也就是说…

二维数组之前缀和中篇

在此之前&#xff0c;可以先看看这篇二维数组之二维前缀和-首篇。 和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,…

cesium加载倾斜影像数据(模拟雨、雪、雾、无人机飞行、测距、箭头标绘、电子围栏等)

实现效果如下&#xff1a; 功能菜单如下&#xff1a; 加载倾斜影像核心代码&#xff1a; var palaceTileset new Cesium.Cesium3DTileset({url: http://127.0.0.1:9002/tileset.json,//控制切片视角显示的数量&#xff0c;可调整性能maximumScreenSpaceError: 0.1,maximumNum…

c++的学习之路:25、map与set

摘要 本文中说一下map与set的使用 目录 摘要 一、关联式容器 二、键值对 三、map 1、map的介绍 2、map的使用 1、map的模板参数说明&#xff1a; 2、map的构造 3、map的迭代器 4、map的容量与元素访问 5、map中元素的修改 6、代码使用 ​编辑 三、总结 四、se…

51单片机入门_江协科技_33~34_OB记录的自学笔记_LED呼吸灯与PWM直流马达调速

33. 直流电机驱动(PWM) 33.1. 直流电机介绍 •直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极&#xff0c;当电极正接时&#xff0c;电机正转&#xff0c;当电极反接时&#xff0c;电机反转 •直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&…

winform 入门篇 -- 第15章 表格视图

表格控件 表格视图 DataGridView &#xff0c;即表格控件提行多行多列的表格状的数据展示 演示: 以表格控件来展示学生数据。。 每个单元格 都可以进行独立的编写 &#xff08;与上节得不同&#xff09; 基本操作: 1 添加一个表格控件 DataGridView 2 设置列数、列名 属…

HarmonyOS Next 视频弹幕功能

视频弹幕功能 介绍 本示例介绍如何使用ohos.danmakuflamemaster和ohos.gsyvideoplayer开发支持视频弹幕的播放器。可以自定义弹幕样式、占据屏幕宽度&#xff0c;发送弹幕&#xff0c;开关弹幕视图。 效果图预览 使用说明 点击播放按钮&#xff0c;进行视频播放&#xff0c…

STM32 USB虚拟串口

电路原理图 usb部分 晶振部分 usb与单片机连接 配置信息 sys配置信息 rcc配置信息 usb配置信息 虚拟串口配置信息 时钟配置信息 项目配置信息 代码 包含文件 主函数代码 实验效果 修改接收波特率依然可以正常接收&#xff0c;也就是说单片机可以自动适应上位机的波特率设置。…

2023年图灵奖揭晓:Avi Wigderson的辉煌成就与深远影响

2023年图灵奖揭晓&#xff0c;你怎么看&#xff1f; 2023年图灵奖&#xff0c;最近刚刚颁给普林斯顿数学教授 Avi Wigderson&#xff01;作为理论计算机科学领域的领军人物&#xff0c;他对于理解计算中的随机性和伪随机性的作用&#xff0c;作出了开创性贡献。 方向三&#xf…