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();
    }
}
相关推荐
best_virtuoso4 小时前
PostgreSQL CTE与临时表的概念与区别
数据库·postgresql
点心快奔跑5 小时前
超详细Windows系统MySQL 安装教程
数据库·windows·mysql
超级苦力怕6 小时前
【超详细】Redis下载教程 (Win/Linux)
数据库
codervibe6 小时前
MySQL 命令行连接与企业级远程访问实践(含故障排查与安全策略)
数据库·后端
workflower6 小时前
测试套件缩减方法
数据库·单元测试·需求分析·个人开发·极限编程
Cikiss6 小时前
图解 MySQL JOIN
数据库·后端·mysql
员大头硬花生6 小时前
六、InnoDB引擎-架构-结构
数据库·mysql·oracle
程序新视界7 小时前
在MySQL中,是否可以使用UUID作为主键?
数据库·后端·mysql
♡喜欢做梦7 小时前
Spring MVC 响应处理:页面、数据与状态配置详解
java·javascript·spring·java-ee
晓py7 小时前
InnoDB 事务日志机制全流程详解|从 SQL 到崩溃恢复的完整旅程
数据库·sql·oracle