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

相关推荐
码农小卡拉9 分钟前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
怣5013 分钟前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
跳动的梦想家h23 分钟前
环境配置 + AI 提效双管齐下
java·vue.js·spring
wjhx34 分钟前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星1 小时前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发1 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
独断万古他化1 小时前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
冉冰学姐1 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架
杨超越luckly1 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
Elastic 中国社区官方博客2 小时前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索