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.hqwc.cn/news/709504.html

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

相关文章

Eclipase的JNnit导包报错

在使用Eclipase 创建项目时系统会自动帮我们生成一个module文件,JNnit单元测试时,记得删除自动生成的 module-info.java文件,不然会一直报错找不到 org

来玩 GitHub 啊,SSH 连接方式

Windows 11 git version 2.32.0.windows.2 GitHub 20240520 --今天找回了自己的 GitHub 账号密码,继续玩吧,再次加入 蓝星的开源软件基地。 使用邮箱注册的,找回密码也很方便。本文简要展示 按照官方文档的介绍 使用 SSH 连接 GitHub 的过程。 简述为:创建SSH密钥对 公钥注…

来玩 GitHub 啊,SSH 连接

今天找回了自己的 GitHub 账号密码,继续玩吧,再次加入 蓝星的开源软件基地。 使用邮箱注册的,找回密码也很方便。本文简要展示 按照官方文档的介绍 使用 SSH 连接 GitHub 的国产。主要文档 1、Connecting to GitHub with SSH https://docs.github.com/en/authentication/con…

ABC 354 (atcoder beginer 354) D、E、F

D检查: 1. 有可能是推导式有问题,比如-/+写错 2. x,y A、B、C、D 顺序可能搞反了 不要盲目调试,先用人眼看一下代码的情况,找一下错误很简单的找规律的题目。 很不能理解过的人,就这些。 x方向,y方向,都是4行/列,一个规律的循环。求(0,0)到(x,y)中的黑色块: 第0-3…

BUUCTF-WEB(21-25)

[HCTF 2018]admin 这道题目就是admin说明得管理员登录 那我直接创一个admin的账号但是显示已经存在了说明用户名就是admin,然后我们直接爆破,也是爆破出来密码就是123直接登录[MRCTF2020]你传你🐎呢 这个题就是文件上传,我们MIME绕过,后缀名都被ban了,我们上传.htaccess…

5.8-随堂练习1

1992年,姜万勐 看到 MPEG芯片 Epiphany – 用MPEG1 把图像和声音同时存储在一张小光盘上 VCD(Video Compact Disc)。 1993年9月 万燕第一批1000台VCD机下线。 几乎都被国内外家电公司买去解剖做样机 万燕VCD 100% 市场份额 1995年 各路仿制的VCD机大举进军市场,竞争激烈。 …

5.8-随堂练习-小组练习2

结合本小组项目写下能想到的所有 SWOT答案: 【第九组】 在充电桩电控系统项目中,可以想到以下所有的SMOT(Strengths, Weaknesses, Opportunities, Threats): Strengths (强项):功能丰富:系统具有多种功能,包括充电桩管理、用户充电、支付功能等。 易用性:界面设计简洁…

foobar2000 v2.1.5 汉化版

foobar2000 v2.1.5 汉化版 -----------------------【软件截图】---------------------- -----------------------【软件介绍】---------------------- foobar2000 是一个 Windows 平台下的高级音频播放器.包含完全支持 unicode 及支持播放增益的高级标签功能. 特色: * 支持的…

学习笔记

CPP:函数指针定义方法 int (func)(int i); int (p)(int)=func

C123【模板】扩展域并查集 P1892 [BOI2003] 团伙

视频链接: P1892 [BOI2003] 团伙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 扩展域并查集 #include <iostream> #include <cstring> #include <algorithm> using namespace std;int n,m,a,b,s; int p[2005];int find(int x){return p[x]==x?x:p[…

Hadoop集群模式的搭建之四:运行Hadoop集群

格式化NameNode 当第一次启动HDFS时要进行格式化,将NameNode上的数据清零,否则会缺失DataNode。以后启动无需再格式化,只要运行过Hadoop集群,其工作目录(/usr/local/src/hadoop/tmp)中就会有数据。如果需要重新格式化,则在重新格式化之前一定要先删除工作目录下的数据,…

3.13-主题讨论

答案: 作为创始人,将产品的远景转化为需求,并确保在用户行为改变的情况下保持产品的愿景,需要以下步骤:分析和定义需求:首先,对产品的远景进行详细分析,确定在10年后产品要实现的目标和愿景。然后,将这些目标和愿景转化为具体的功能和特性需求,以确保产品能够满足用户…