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

相关推荐
东风破_26 分钟前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
橙子家2 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_962066493 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext4 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
2601_962073816 小时前
Spring全面详解(基础版)
java·后端·spring
数字新视界6 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..6 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
这个DBA有点耶7 小时前
数据库容灾进入“秒级时代”:同城双活架构原理、关键技术选型与落地实践
数据库·架构·dba
2601_962074818 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
凤山老林8 小时前
Spring Boot 集成 Spring Vault:集中式密钥管理与动态凭证轮换
spring boot·后端·spring·vault·集中式秘钥管理