Spring 对 Junit4,Junit5 的支持上的运用

1. Spring 对 Junit4,Junit5 的支持上的运用

文章目录

  • 1. Spring 对 Junit4,Junit5 的支持上的运用
  • 每博一文案
  • 2. Spring对Junit4 的支持
  • 3. Spring对Junit5的支持
  • 4. 总结:
  • 5. 最后:


每博一文案

关于理想主义,在知乎上看到一句话:“他们并不是不懂别人口中的现实,他们只是不信,事情只能是现在这个样子。”错误的、肮脏的、混乱的、轻松自如的、自言尽力了,有人真的不懂么?为了利益和怠惰做出这样那样或好或坏的事情,什么动物都会。有人会开脱和找借口,说着现实就是如此啊,无力改变世界就改变自己啊。他们对现状摇摇头然后果断投入到漆黑的污水里去,义无反顾地。但理想主义者是不信的,他们先是在语言上画一个大问号,再用行动画一个大叹号。他先问你,怎么就非得这样不可?怎么就没了别的办法?然后再用做出来的事情告诉你,我告诉你就是还能有更干净、更温和、更有效的办法!他们自己也有不能一尘不染的时候。但他们看着满目漆黑也不信世界上就没有洁白、干净这回事。理想主义者就是不会相信生活和世界就是这样了。不管它是别人眼中的好,还是坏。“一定有更好的办法,也能够通过合理的方式,缓慢地改善世界。愿意为了自己的理想而做些什么,甚至也愿意去牺牲什么。对于自己的手段、目的与认知,始终心怀疑问。即使做出的一切都看不到所谓的成效。即使这改变在活着的时候甚至也看不到。知道世界比较容易被忍受的这部分,是很多人用了很多代价换来的。但不会停下对好的东西的向往,还有向光明的地方行走的脚步。”这才算理想主义者吧。往往是重视精神价值超过物质利益。理想主义者把对精神价值的追求看作人生的主要追求,这些精神价值包括:尊严、正义、爱、美等等。而浪漫主义,诺瓦利斯说过:“在我看来,把普通的东西赋予崇高的意义,给平凡的东西披上神秘的外衣,使熟知的东西恢复未知的尊严,对有限的东西给予无限的外观,这就是浪漫化。反过来说,这就是变得崇高、未知、神秘和无限的过程,通过这种联系,这一浪漫化过程就会被对数化。它得到一个常用的表达:浪漫哲学。”

2. Spring对Junit4 的支持

准备工作,先在pom.xml 文件当中,导入相关依赖的 jar 包信息,如下:

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>spring6-015-junit</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><!--仓库--><repositories><!--spring里程碑版本的仓库--><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies><!--        spring context 依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.11</version></dependency><!--        spring 对 Junit 支持的依赖--><!--spring对junit的支持相关依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><!--            这个版本spring6,既支持Junit4 又支持Junit5--><version>6.0.11</version></dependency><!--        junit4依赖--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><!--        @Resoure 注解 非简单类型的注入,赋值--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency></dependencies></project>

准备好,对于的 Bean 对象用于测试:注意:需要将其 Bean 对象纳入到 Spring IOC 容器当中进行管理上。

在这里插入图片描述

package com.rainbowsea.spring6.bean;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component(value = "user")   // 交给 Spirng IOC 容器管理
public class User {@Value("张三") // spring 当中 value()注解简单类型的,set注入,赋值private String name;public User(String name) {this.name = name;}public User() {}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

配置相关的:spring.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.xsdhttp://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--    组件扫描--><context:component-scan base-package="com.rainbowsea.spring6.bean"></context:component-scan>
</beans>

单元测试:(一般平常的单元测试)如下:

在这里插入图片描述

在这里插入图片描述

上述:方式,代码重复率高,复用性较差。

Spring提供的方便主要是这几个注解:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(“classpath:spring.xml”)注意该:spring.xml 文件要一定要在类路径下才行
在单元测试类上使用这两个注解之后,在单元测试类中的属性上可以使用 @Autowired。比较方便。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml") // 注意该:spring.xml 文件要一定要在类路径下才行

优化如下:

在这里插入图片描述

在这里插入图片描述

使用@Resource 需要导入相关的 jar 包,如下:

在这里插入图片描述

<!--        @Resoure 注解 非简单类型的注入,赋值--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency>

在这里插入图片描述

同时注意:该Juit4的@ Test 的注解是在:org.junit.Test; 包下的

在这里插入图片描述

package com.rainbowsea.spring6.test;import com.rainbowsea.spring6.bean.User;
import jakarta.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit4Test2 {@Resource(name = "user")private User user;@Testpublic void testUser() {System.out.println(user.getName());}@Testpublic void testUser2() {System.out.println(user.getName());}@Testpublic void testUser3() {System.out.println(user.getName());}}

3. Spring对Junit5的支持

引入JUnit5的依赖,Spring对JUnit支持的依赖还是:spring-test,同时换成,junit5 ,还是在 pom.xml 文件当值配置相关依赖的 jar 如下:

在这里插入图片描述

 <!--        junit5 依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.0</version><scope>test</scope></dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>spring6-015-junit</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><!--仓库--><repositories><!--spring里程碑版本的仓库--><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies><!--        spring context 依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.11</version></dependency><!--        spring 对 Junit 支持的依赖--><!--spring对junit的支持相关依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><!--            这个版本spring6,既支持Junit4 又支持Junit5--><version>6.0.11</version></dependency><!--        junit5 依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.0</version><scope>test</scope></dependency><!--        @Resoure 注解 非简单类型的注入,赋值--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency></dependencies></project>

还是使用上面的 User 的 bean 对象进行测试:

在这里插入图片描述

在JUnit5当中,可以使用Spring提供的以下两个注解,标注到单元测试类上,这样在类当中就可以使用@Autowired注解了。

@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")  // 同样一定要是在类路径下

@ContextConfiguration(“classpath:spring.xml”) // 同样一定要是在类路径下

在这里插入图片描述

同时注意:该Juit5 的@ Test 的注解是在:org.junit.jupiter.api.Test 包下的 ,选择的时候不要,弄错了。

在这里插入图片描述

单元测试:

在这里插入图片描述

package com.rainbowsea.spring6.test;import com.rainbowsea.spring6.bean.User;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit5Test {@Resource(name = "user")  // 非简单类型的注入,赋值,交给Spring管理private User user;@Test  // import org.junit.jupiter.api.Test;public void testUser() {System.out.println(user.getName());}@Test  // import org.junit.jupiter.api.Test;public void testUser2() {System.out.println(user.getName());}@Test  // import org.junit.jupiter.api.Test;public void testUser3() {System.out.println(user.getName());}}

4. 总结:

  1. Spring 对 Junit4 的依赖的 jar 包,同时
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml") // 注意该:spring.xml 文件要一定要在类路径下才行
  1. 同时注意:该Juit4的@Test 的注解是在:org.junit.Test; 包下的
  2. Spring 对 Junit5 的依赖的 jar 包,同时
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")  // 同样一定要是在类路径下
  1. 无论是 Junit4 还是 Junit5 当中的 @ContextConfiguration 注解当中的 @ContextConfiguration(“classpath:spring.xml”) 都是:一定要是在类路径下才行的。
  2. 关于:Spring 对 Junit4,Junit5 的支持运用,大家灵活选择运用即可,并不是非要选择其中的哪个哪个啥的。满足业务即可。

5. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

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

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

相关文章

Xline社区会议Call Up|在 CURP 算法中实现联合共识的安全性

为了更全面地向大家介绍Xline的进展&#xff0c;同时促进Xline社区的发展&#xff0c;我们将于2024年5月31日北京时间11:00 p.m.召开Xline社区会议。 欢迎您届时登陆zoom观看直播&#xff0c;或点击“阅读原文”链接加入会议&#xff1a; 会议号: 832 1086 6737 密码: 41125…

通过cmd命令行使用用3dmax自带的vray渲染

有时调试需要使用vray渲染vrscene文件看效果&#xff0c;只装有3dmax下可以使用自带vray渲染&#xff0c;在3dmax的渲染日志里面看自带引擎路径 使用命令行进入到此目录 执行命令指定vr文件即可看到效果&#xff0c;如&#xff1a;vray.exe -sceneFile“C:\test15\202405241…

Cesium与Three相机同步(2)

之前实现了将Three相机同步到Cesium相机Cesium与Three相机同步(1)-CSDN博客 现在是将Cesium相机同步到Three相机,从而实现了相机双向同步。 <!DOCTYPE html> <html lang="en"><head><title>three.js webgl - orbit controls</title&g…

【教学类-58-03】黑白三角拼图03(4*4宫格)总数算不出+随机抽取10张

背景需求&#xff1a; 【教学类-58-01】黑白三角拼图01&#xff08;2*2宫格&#xff09;256种-CSDN博客文章浏览阅读318次&#xff0c;点赞10次&#xff0c;收藏12次。【教学类-58-01】黑白三角拼图01&#xff08;2*2宫格&#xff09;256种https://blog.csdn.net/reasonsummer/…

【Jmeter】使用Jmeter进行接口测试、跨线程组获取参数

Jmeter接口测试 Jmeter设置成中文实操练习-跨线程组提取参数&#xff0c;使用值HTTP请求默认值&HTTP信息头管理器 相信打算从事测试工程师的同学们&#xff0c;肯定对Jmeter是耳熟能详的。使用Jmeter可以进行接口测试、性能测试、压力测试等等&#xff1b;这个章节介绍如何…

cocos 通过 electron 打包成 exe 文件,实现通信问题

cocos 通过 electron 打包成 exe 文件&#xff0c;实现通信问题 首先&#xff0c;我使用的 cocos 版本是 2.4.12&#xff0c;遇到一个问题&#xff0c;是啥子呢&#xff0c;就是我要把用 cocos 开发出来的项目打包成一个 exe 可执行程序&#xff0c;使用的是 electron &#xf…

【C++算法】BFS解决多源最短路问题相关经典算法题

1.01矩阵 既然本章是BFS解决多源最短路问题&#xff0c;也就是说有若干个起点&#xff0c;那我们就可以暴力一点&#xff0c;直接把多源最短路径问题转化成若干个单源最短路径问题&#xff0c;然后将每次的步数比较一下&#xff0c;取到最短的就是最短路径的结果&#xff0c;这…

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常 环境 win10arcgis 10.6 问题 执行定义投影要素转线出现 Error: 001143:后台服务器抛出异常&#xff08;差点重装10.6&#xff09; 如下图所示&#xff1a; 解决方法 通过在菜单工具条上单击地理处理 > 地理处…

设计模式使用(成本扣除)

前言 名词解释 基础名词 订单金额&#xff1a;用户下单时支付的金额&#xff0c;这个最好理解 产品分成&#xff1a;也就是跟其他人合做以后我方能分到的金额&#xff0c;举个例子&#xff0c;比如用户订单金额是 100 块&#xff0c;我方的分成是 80%&#xff0c;那么也就是…

OceanMind海睿思通过上海数交所数商认证,提供高质量数据治理和数据咨询服务

近日&#xff0c;中新赛克海睿思成功通过上海数据交易所的数商认证&#xff0c;获得上海数据交易所颁发的“数据产品开发服务商”、“数据治理服务商”和“数据咨询服务商”三大证书。 作为由深圳市创新投资集团有限公司投资控股的高新技术企业&#xff0c;国家级专精特新“小巨…

如何通过OpenHarmony的音频模块实现录音变速功能?

简介 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;是由开放原子开源基金会孵化及运营的开源项目&#xff0c;是面向全场景、全连接、全智能时代的智能物联网操作系统。 多媒体子系统是OpenHarmony系统中的核心子系统&#xff0c;为系统提供了相机、…

Java入门基础学习笔记43——包

什么是包&#xff1f; 包是用来分门别类的管理各种不同程序的&#xff0c;类似文件夹&#xff0c;建包有利于程序的管理和维护。 建包的语法规则&#xff1a; package cn.ensource.javabean;public class Car() {} 在自己的程序中调用其他包下的程序的注意事项&#xff1a; 1…

动手学深度学习——层和块

1. 层 层是一个将输入数据转换为输出数据的神经网络组件。每个层都会对输入数据进行一定的操作&#xff0c;例如线性变换、非线性激活函数等&#xff0c;以产生输出数据。 torch.nn模块提供了各种预定义的层&#xff0c;如线性层、卷积层、池化层等&#xff0c; nn.Linear&a…

BLE学习笔记(0.0) —— 基础概念(0)

前言 &#xff08;1&#xff09;本章节主要是对BLE技术进行简单的介绍&#xff0c;熟悉蓝牙技术的发展过程&#xff0c;了解相关术语方便后续的学习。 &#xff08;2&#xff09;为了防止单篇博客太长以至于看不下去&#xff0c;因此我基础概念章节分为两篇来写。 &#xff08;…

Mysql教程(0):学习框架

1、Mysql简介 MySQL 是一个开放源代码的、免费的关系型数据库管理系统。在 Web 开发领域&#xff0c;MySQL 是最流行、使用最广泛的关系数据库。MySql 分为社区版和商业版&#xff0c;社区版完全免费&#xff0c;并且几乎能满足全部的使用场景。由于 MySQL 是开源的&#xff0…

1075: 求最小生成树(Prim算法)

解法&#xff1a; 总结起来&#xff0c;Prim算法的核心思想是从一个顶点开始&#xff0c;一步一步地选择与当前最小生成树相邻的且权值最小的边&#xff0c;直到覆盖所有的顶点&#xff0c;形成一个最小生成树。 #include<iostream> #include<vector> using names…

springboot基于Web前端技术的java养老院管理系统_utbl7

3.普通用户模块包括&#xff1a;普通会员的注册、养老院客房查询、养老院留言查询、预约老人基本信息登记、选择房间、用户缴费的功能。 4.数据信息能够及时进行动态更新&#xff0c;增删&#xff0c;用户搜素方便&#xff0c;使用户可以直接浏览相关信息&#xff0c;要考虑便于…

Vue3实战笔记(35)—集成炫酷的粒子特效

文章目录 前言一、vue3使用tsparticles二、使用步骤总结 前言 学习一个有趣炫酷的玩意开心一下。 tsparticles&#xff0c;可以方便的实现各种粒子特效。支持的语言框架也是相当的丰富. 官网&#xff1a;https://particles.js.org/ 一、vue3使用tsparticles 先来个vue3使用…

代码随想录训练营打卡第36天:动态规划解决子序列问题

1.300最长递增子序列 1.问题描述 找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。 2.问题转换 从nums[0...i]的最长的递增的子序列 3.解题思路 每一个位置的n…

C++多态详解

目录 一、多态的概念 二、多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写 4.例题理解&#xff08;超级重要&#xff0c;强烈建议做一下&#xff09; 5.C11 override和 final 6.重载、覆盖&#xff08;重写&#xff09;、隐藏&#xff08;重定义&#xff0…