在之前的测试方法中,几乎都能看到以下几行代码:
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),然后把对象注入
直接调用就可以了