spring —— spring 整合 junit

如果不使用 spring 整合 junit,每次取对象时都要建立 spring 容器,然后从 spring 容器中提取对象,也就是以下两行代码:

java 复制代码
//建立spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("xxx.xml");
//从spring容器中提取对象
XX xx = (XX) context.getBean("XX");

使用 spring 整合 junit,则可以省略这一步骤。根据 junit 版本不同,可分为 spring 整合 junit5,或者 spring 整合 junit4。

一、spring 整合 junit5

(一)pom 文件中需添加依赖:

复制代码
\<dependency\>
\<!--spring整合junit依赖--\>
\<groupId\>org.springframework\</groupId\>
\<artifactId\>spring-test\</artifactId\>
\<version\>6.1.3\</version\>
\</dependency\>
\<dependency\>
\<!--junit5依赖--\>
\<groupId\>org.junit.jupiter\</groupId\>
\<artifactId\>junit-jupiter-api\</artifactId\>
\<version\>5.9.0\</version\>
\</dependency\>

(二)spring-config.xml 文件配置:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <context:component-scan base-package="com.atguigu.spring6"></context:component-scan>

</beans>

(三)java 代码:

目标类:

java 复制代码
package com.atguigu.spring6;

import org.springframework.stereotype.Component;

@Component
public class User {
}

测试类(第一种写法):

java 复制代码
package com.test;

import com.atguigu.spring6.User;
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 UserTest {
    @Autowired
    private User user;

    @Test
    public void run(){
        System.out.println(user);
    }
}

测试类(第二种写法):

java 复制代码
package com.test;

import com.atguigu.spring6.User;
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 UserTest {
    @Autowired
    private User user;

    @Test
    public void run(){
        System.out.println(user);
    }
}

二、spring 整合 junit4

(一)pom 文件中需添加依赖:

复制代码
\<dependency\>
\<!--spring整合junit依赖--\>
\<groupId\>org.springframework\</groupId\>
\<artifactId\>spring-test\</artifactId\>
\<version\>6.1.3\</version\>
\</dependency\>
\<dependency\>
\<!--junit4依赖--\>
\<groupId\>junit\</groupId\>
\<artifactId\>junit\</artifactId\>
\<version\>4.13.2\</version\>
\</dependency\>

(二)spring-config.xml 文件配置:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <context:component-scan base-package="com.atguigu.spring6"></context:component-scan>

</beans>

(三)java 代码:

目标类:

java 复制代码
package com.atguigu.spring6;

import org.springframework.stereotype.Component;

@Component
public class User {
}

测试类:

java 复制代码
package com.test;

import com.atguigu.spring6.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 UserTest {
    @Autowired
    private User user;

    @Test
    public void run(){
        System.out.println(user);
    }
}

注意:

spring 整合 junit5 和 junit4,除了依赖不同,注解不同,@Test 也不相同。

相关推荐
偶遇急雨洗心尘8 小时前
记录一次服务器迁移时,数据库版本不一致导致sql函数报错和系统redirect重定向丢失域名问题
运维·服务器·数据库·sql
中国胖子风清扬8 小时前
Spring AI Alibaba + Ollama 实战:基于本地 Qwen3 的 Spring Boot 大模型应用
java·人工智能·spring boot·后端·spring·spring cloud·ai
Arva .8 小时前
MySQL 的存储引擎
数据库·mysql
Logic1018 小时前
《Mysql数据库应用》 第2版 郭文明 实验5 存储过程与函数的构建与使用核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
小二·9 小时前
MyBatis基础入门《十六》企业级插件实战:基于 MyBatis Interceptor 实现 SQL 审计、慢查询监控与数据脱敏
数据库·sql·mybatis
bing.shao9 小时前
Golang WaitGroup 踩坑
开发语言·数据库·golang
专注VB编程开发20年9 小时前
C#内存加载dll和EXE是不是差不多,主要是EXE有入口点
数据库·windows·microsoft·c#
小二·9 小时前
MyBatis基础入门《十二》批量操作优化:高效插入/更新万级数据,告别慢 SQL!
数据库·sql·mybatis
何中应9 小时前
【面试题-6】MySQL
数据库·后端·mysql·面试题
路遥_139 小时前
银河麒麟 V10 安装部署瀚高数据库 HighGoDB 4.5 全流程(统信UOS Server 20同理)
数据库