Spring整合Junit(4、5)

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

ApplicationContext context = new classPathXmlApplicationContext("xxx.xm");

XXXX XXX = context.getBean(Xxxx.cTass);

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

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

Spring提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件位置就可以了。这样就能通过Spring整合JUnit可以使程序创建spring容器

整合Junit5

1.引入相关依赖

java 复制代码
<!--        spring整合Junit相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.2</version>
        </dependency>

        <!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

2.创建实体类

java 复制代码
@Component
public class User {
    public void run(){
        System.out.println("user...");
    }
}

3.配置bean.xml文件

java 复制代码
<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!--    开启组件扫描-->
    <context:component-scan base-package="com.yogurt.spring6.junit"></context:component-scan>

</beans>

4.测试

java 复制代码
@SpringJUnitConfig(locations = "classpath:bean.xml")
public class SpringTestJunit5 {

    //注入
    @Autowired
    private User user;

    //测试
    @Test
    public void testUser(){
        System.out.println(user);
        user.run();
    }

}

注:@SpringJUnitConfig(locations = "classpath:bean.xml")可以替换成

@ExtendWith(SpringExtension.class)

@ContextConfiguration("classpath:bean.xml")

整合Junit4

1.引入相关依赖

java 复制代码
<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

2.创建实体类

java 复制代码
@Component
public class User {
    public void run(){
        System.out.println("user...");
    }
}

3.配置bean.xml文件

java 复制代码
<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!--    开启组件扫描-->
    <context:component-scan base-package="com.yogurt.spring6.junit"></context:component-scan>

</beans>

4.测试

java 复制代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:bean.xml")
public class SpringTestJunit4 {

    @Autowired
    private User user;

    @Test
    public void testUser(){
        System.out.println(user);
        user.run();
    }
}
相关推荐
吃糖的小孩13 小时前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3501 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3501 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3501 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
SelectDB2 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶2 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵2 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
Nturmoils2 天前
WHERE 条件别凭习惯写,常用查询先跑一遍
数据库
Databend3 天前
在 AWS 中国峰会逛了一天,我在 Databend 展台看到了 Agent 数据基础设施的新思路
数据库·人工智能·agent