Spring 整合 Junit 单元测试类
普通 Junit 测试问题
在普通的测试类中,需要开发者手动加载配置文件并创建 Spring 容器,然后通过 Spring 相关 API 获得Bean实例;如果不这么做,那么无法从容器中获得对象。
// 获取到 spring 上下文对象,借助上下文对象可以获取到 IOC 容器中的 bean 对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 使用上下文对象从容器中获取 到 bean 对象
IUserService userService = (IUserService) applicationContext.getBean("userService");
我们可以 SpringJunit 负责创建 Spring 容器来简化这个操作,开发者可以直接在测试类注入Bean实例;但是需要将配置文件的名称告诉它。
Spring 整合 Junit
步骤分析
- 导入 Spring 集成 Junit的坐标
此处需要注意的是, spring5 及上版本要求 Junit 的版本必须是 4.12 及以上
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
- 使用 @RunWith 注解替换原来的运行器
@RunWith(SpringJUnit4ClassRunner.class)`
@RunWith 指定 Junit 的运行环境
SpringJUnit4ClassRunner 是 Spring 提供的做为 Junit 运行环境的类
- 使用 @ContextConfiguration 指定配置文件或配置类
xml 开发
@ContextConfiguration({"classpath:applicationContext.xml"})
纯注解开发
@ContextConfiguration(classes = {核心配置类的class})
- 使用 @Autowired 注入需要测试的对象
- 创建测试方法进行测试