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 也不相同。

相关推荐
fīɡЙtīиɡ ℡17 分钟前
内存泄漏产生的原因
java·spring·servlet
MonolithIoT18 分钟前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
瞬间&永恒~40 分钟前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
心机之蛙qee1 小时前
Redis的主从、哨兵及集群
数据库·redis·缓存
gwf2162 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥2 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
xixingzhe22 小时前
spring ai简单使用skills
数据库·人工智能·spring
Fu2067212 小时前
数据库第三次作业
数据库
AI多Agent协作实战派3 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
jun_bai3 小时前
postgresql数据库免安装版安装到windows系统
数据库·postgresql