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();
    }
}
相关推荐
爱吃面条的猿3 分钟前
DBeaver 全能数据库管理工具的使用配置
数据库·dbeaver
杨云龙UP11 分钟前
从0到可落地:Oracle RMAN异地NFS备份标准脚本(多实例通用)
linux·运维·数据库·oracle
TDengine (老段)16 分钟前
网络延时对 TDengine TSDB 写入性能的影响:实验解析与实践建议
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
古城小栈17 分钟前
吃透Cron表达式
linux·服务器·数据库
jiayong2321 分钟前
Spring 框架完全指南
java·后端·spring
mpHH27 分钟前
ivorysql 源码分析-双port兼容
数据库·学习·postgresql
真上帝的左手42 分钟前
4. 关系型数据库-MySQL-架构
数据库·mysql·架构
haiyu柠檬43 分钟前
迁移redis 集群从Ubuntu到Red Hat
数据库·redis·缓存
没有bug.的程序员1 小时前
Async Profiler:最精准的火焰图工具
java·jvm·spring·对象分配·async profiler