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();
    }
}
相关推荐
岁岁种桃花儿7 分钟前
SpringCloud超高质量面试高频题300道题
spring·spring cloud·面试
踢足球092922 分钟前
寒假打卡:2026-2-3
数据库
每次学一点24 分钟前
【ZeroTier自研之路】planet的组成
服务器·网络·数据库
策知道37 分钟前
2026年北京政府工作报告产业指标深度解析
大数据·数据库·人工智能·搜索引擎·政务
czlczl200209251 小时前
Spring Data Redis
java·redis·spring
闻哥1 小时前
深入理解 Spring @Conditional 注解:原理与实战
java·jvm·后端·python·spring
Traced back1 小时前
# C# WinForms 数据库清理系统基础知识与避坑指南
开发语言·数据库·c#
云边有个稻草人1 小时前
金仓 VS MongoDB:国产数据库凭什么成为MongoDB平替首选?
数据库·mongodb·国产数据库·金仓·kingbasees sql
DarkAthena2 小时前
【GaussDB】排查创建索引后查询数据行数发生变化的问题
数据库·sql·gaussdb
MengFly_2 小时前
Compose 脚手架 Scaffold 完全指南
android·java·数据库