Spring 6 第6章——单元测试:Junit

devtools/2025/1/23 12:48:02/

一、整合JUnit5

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

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

这两行代码的作用是创建Spring容器,最终获取到对象,但是每次测试都需要重复编写

针对上述问题,我们需要的是程序能自动帮我们创建容器,我们都知道JUnit无法知晓我们是否使用了Spring框架,更不用说帮我们创建Spring容器了

Spring提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件位置就可以了

这样一来,我们通过Spring整合JUnit可以使程序创建Spring容器了

(1)搭建子模块

  1. 搭建子模块spring6-junit
  2. 如图所示:

(2)引入依赖

  1. 引入相关依赖:
    <dependencies><!--spring context依赖--><!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.2</version></dependency><!--springjunit的支持相关依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>6.0.2</version></dependency><!--junit5测试--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.0</version></dependency><!--log4j2的依赖--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.19.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j2-impl</artifactId><version>2.19.0</version></dependency>
    </dependencies>

(3)添加配置文件

  1. 添加Spring的配置文件:
  2. 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"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><context:component-scan base-package="com.atguigu.spring6"></context:component-scan>
    </beans>

(4)添加Java类

  1. 编写一个User类:
    package com.atguigu.spring6.junit.junit5;import org.springframework.stereotype.Component;@Component
    public class User {public void run(){System.out.println("user......");}}

(5)测试

  1. 测试类和测试方法:
    package com.atguigu.spring6.junit.junit5;import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;@SpringJUnitConfig(locations = "classpath:bean.xml")
    public class SpringTestJUnit5 {@Autowiredprivate User user;//测试方法:@Testpublic void testUser(){System.out.println(user);user.run();}
    }
  2. 测试效果: 
  3. 或者还有一种注解方式,也能成功
    package com.atguigu.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;@ExtendWith(SpringExtension.class)
    @ContextConfiguration("classpath:bean.xml")
    public class SpringTestJUnit5 {@Autowiredprivate User user;//测试方法:@Testpublic void testUser(){System.out.println(user);user.run();}
    }
     

二、整合JUnit4

(1)添加依赖

  1. 引入相关依赖:
    <!-- junit测试 -->
    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
    </dependency>
  2. 这时JUnit4和JUnit5的不同之处:
  3. 第二个不同之处:JUnit4JUnit5

(2)测试

  1. 测试代码:
    package com.atguigu.spring6.junit.junit4;import com.atguigu.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("classpath:bean.xml")
    public class SpringTestJUnit4 {@Autowiredprivate User user;@Testpublic void testUser(){System.out.println(user);user.run();}
    }
  2. 测试效果:


http://www.ppmy.cn/devtools/152882.html

相关文章

堆的实现(C语言详解版)

一、堆的概念 1.概念 堆&#xff08;Heap&#xff09;是一种特殊的完全二叉树&#xff0c;它满足父节点的值总是不大于或不小于其子节点的值。这种数据结构常用于实现优先队列&#xff0c;以及在各种排序算法中快速找到最大或最小元素。 堆分为两种类型&#xff1a;最大堆和…

提升 Go 开发效率的利器:calc_util 工具库

提升 Go 开发效率的利器&#xff1a;calc_util 工具库 在日常开发中&#xff0c;我们常常需要处理数组&#xff08;切片&#xff09;的交集、差集、并集操作&#xff0c;或者更新和过滤数据。尽管这些功能可以手动实现&#xff0c;但重复的逻辑代码不仅影响效率&#xff0c;也…

卸载和安装Git小乌龟、git基本命令

卸载 Git 打开控制面板&#xff1a; 按 Win R 打开运行对话框&#xff0c;输入 control 并按回车键。或直接在功能搜索里搜索“控制面板”。在控制面板中&#xff0c;选择“程序”或“程序和功能”。 查找并卸载 Git&#xff1a; 在程序列表中找到“Git”或“Git for Windows…

Python网络自动化运维---SSH模块

目录 SSH建立过程 实验环境准备 一.SSH模块 1.1.Paramiko模块 1.1.1实验代码 1.1.2代码分段讲解 1.1.3代码运行过程 1.2Netmiko模块 Netmiko模块对比paramiko模块的改进&#xff1a; 1.2.1实验代码 1.2.2代码分段讲解 1.2.3代码运行过程 二.Paramiko模块和Ne…

STL--list(双向链表)

目录 一、list 对象创建 1、默认构造函数 2、初始化列表 3、迭代器 4、全0初始化 5、全值初始化 6、拷贝构造函数 二、list 赋值操作 1、赋值 2、assign&#xff08;迭代器1&#xff0c;迭代器2&#xff09; 3、assign&#xff08;初始化列表&#xff09; 4、assig…

浅谈单例模式

前言 什么是单例模式&#xff1f; 单例模式&#xff0c;属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例&#xff08;根据需要&#xff0c;也有可能一个线程中属于单例&#xff0c;如&#xff1a;仅线程上下文内使用同一个实例&am…

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用

SpringBoot实现定时任务&#xff0c;使用自带的定时任务以及调度框架quartz的配置使用 文章目录 SpringBoot实现定时任务&#xff0c;使用自带的定时任务以及调度框架quartz的配置使用一. 使用SpringBoot自带的定时任务&#xff08;适用于小型应用&#xff09;二. 使用调度框架…

linux系统安装vmware workstation

linux系统安装vmware workstation 1.下载vmware workstation2.安装vmware workstation&#xff08;使用root用户&#xff09;1.解压2.安装 3.启动vmware workstation 1.下载vmware workstation 访问 https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.6.2/24409262/li…