单元测试:JUnit

38 阅读1分钟

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

ApplicationContext context=
            new ClassPathXmlApplicationContext("xxxx.xml");
Xxxx xxxx = context.getBean(Xxxx.class);

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

针对上述问题,我们需要的是程序能自动帮我们创建容器。我们都知道JUnit 无法知晓我们是否使用了Spring 框架,更不用说帮我们创建Spring容器了。 Spring 提供了一个运行器,可以读取配置文件或注解来创建容器。我们只需要告诉它配置文件的位置就可以了。这样一来,我们通过Spring 整合JUnit

第一步,搭建Spring-JUnit 模块

1 .引入依赖

在父工程原有spring context,spring aop,spring aspects,junit ,log4j2依赖的基础上

增加 spring对junit 支持的相关依赖,以及junit5测试的依赖

<dependencies>
        <!--spring context依赖-->
        <!--当你引入了此依赖之后,表示将spring的基础依赖引入了-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.2</version>
        </dependency>

        <!--spring aop依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>6.0.2</version>
        </dependency>

        <!--spring aspects依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>6.0.2</version>
        </dependency>

        <!--junit-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.3</version>
        </dependency>

        <!--spring对junit支持的相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.2</version>
        </dependency>

        <!--junit5测试-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.0</version>
        </dependency>

        <!--log4j2的依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.13.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.3</version>
        </dependency>
</dependencies>

2.添加配置文件

beans.xml (从aop工程直接粘过来即可)

不过开启组件扫描 扫描的包类路径注意修改!

<?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"
       xmlns:aop="http://www.springframework.org/schema/aop"

       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
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--    开启组件扫描-->
    <context:component-scan base-package="com.atguigu.spring.junit.junit5"></context:component-scan>
</beans>

3.User类

在类上加上spring 注解

4.测试类

注意: 这里使用的是Spring 整合JUnit 的方法,使用了 @SpringJUnitConfig 注解

我们只需要在SpringJunitConfig 里告诉配置文件的位置(locations),然后把对象注入

直接调用就可以了