Spring——单元测试

news/2024/11/16 7:11:26/

单元测试:JUnit

在之前的测试方法中,几乎都能看到以下的两行代码:

java">ApplicationContext context = new ClassPathXmlApplicationContext("xxx.xml");
Xxxx xxx = context.getBean(Xxxx.class);

这两行代码的作用是创建Spring容器,最终获取到对象,但是每次测试都需要重复编写。针对上述问题,我们需要的是程序能自动帮我们创建容器。我们都知道JUnit无法知晓我们是否使用了 Spring 框架,更不用说帮我们创建 Spring 容器了。Spring提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件位置就可以了。这样一来,我们通过Spring整合JUnit可以使程序创建spring容器了

整合JUnit5

搭建子模块

搭建spring-junit模块

引入依赖

<!--spring 整合junit相关依赖-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>6.1.14</version>
</dependency>
<!--junit5测试-->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.10.5</version>
</dependency>

添加配置文件

bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.ling.spring6.junit"/></beans>

添加java

java">package com.ling.spring6.junit.junit5;import org.springframework.stereotype.Component;@Component
public class User {public void run(){System.out.println("User....");}
}

测试

java">package com.ling.spring6.junit.junit5;import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;//方式一:
//@ExtendWith(SpringExtension.class)
//@ContextConfiguration("classpath:bean.xml")// 方式二:
@SpringJUnitConfig(locations = "classpath:bean.xml")
public class SpringTestJunit5 {// 注入@Autowiredprivate User user;// 测试方法@Testpublic void testUser(){System.out.println(user);user.run();}}

整合JUnit4

JUnit4在公司也会经常用到,在此也学习一下

添加依赖

<!--junit4测试-->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version>
</dependency>

测试

java">package com.ling.spring6.junit.junit4;import com.ling.spring6.junit.junit5.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:bean.xml")
public class SpringTestJunit4 {@Autowiredprivate User user;@Testpublic void testUser(){System.out.println(user);user.run();}
}

http://www.ppmy.cn/news/1547388.html

相关文章

微信小程序点击跳转打电话功能

wx.makePhoneCall 属性类型默认值必填说明phoneNumberstring是需要拨打的电话号码successfunction否接口调用成功的回调函数failfunction否接口调用失败的回调函数completefunction否接口调用结束的回调函数&#xff08;调用成功、失败都会执行&#xff09; <view class&q…

【计算机网络】设备网卡NIC的工作内容有哪些呢?

我们平时上网&#xff0c;都需要经过设备网卡的处理&#xff0c;网络接口卡&#xff08;Network Interface Card&#xff0c;简称 NIC&#xff09;是计算机与网络之间的物理连接设备&#xff0c;负责处理网络数据的发送和接收。NIC 的功能涵盖了从物理层到数据链路层的多个方面…

更简单快捷的处理URL参数

在开发前端页面时候&#xff0c;经常会用到跳转页面&#xff0c;在页面进行交互的时候&#xff0c;经常会用到参数携带&#xff0c;我们一般处理方法就是在路由的后面携带我们需要传递的参数。 URL拼接即字符串拼接&#xff0c;在最开始的时候&#xff0c;我们对字符串的拼接都…

js像循环数组那样循环一个数字,Array.from()

Array.from() 是 JavaScript 中的一个静态方法&#xff0c;它可以从类数组对象或可迭代对象中创建一个新的数组实例。这个方法非常有用&#xff0c;尤其是在处理那些不是真正的数组但可以像数组一样访问其元素的对象时。 基本语法 Array.from(arrayLike, mapFn, thisArg) ar…

python程序对服务器cpu和内存资源占用的管理。

背景 在服务器上部署了一套目标检测的程序&#xff0c;做成while true 的轮询检测数据更新的定时任务。 结果没想到那台服务器还有一套可视化程序要给领导演示看&#xff0c;结果演示的时候平台各种报错。 然后通过top查看了一下资源利用率发现python的程序cpu 130。&#xf…

YOLOv11改进,YOLOv11添加GnConv递归门控卷积,二次创新C3k2结构

摘要 视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnCo…

大模型研究报告 | 2024年中国金融大模型产业发展洞察报告|附34页PDF文件下载

随着生成算法、预训练模型、多模态数据分析等AI技术的聚集融合&#xff0c;AIGC技术的实践效用迎来了行业级大爆发。通用大模型技术的成熟推动了新一轮行业生产力变革&#xff0c;在投入提升与政策扶植的双重作用下&#xff0c;以大模型技术为底座、结合专业化金融能力的金融大…

GaussDB全密态数据库等值查询

全密态数据库等值查询 可获得性 本特性自V500R001C20版本开始引入。 特性简介 密态数据库意在解决数据全生命周期的隐私保护问题&#xff0c;使得系统无论在何种业务场景和环境下&#xff0c;数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成…