前期准备
- 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
分析
应用程序的入口是main方法,在Junit单元测试中,没有main方法也能运行方法是因为在Junit中集成了一个main方法,会判断当前测试类中哪些方法有@Test注解,Junit会使用反射的方式来调用使用@Test注解的方法执行。
Junit不会管我们是否有采用Spring框架,也不会为我们读取配置文件/配置类创建的spring核心容器,由上总结得出,测试方法执行时,没有IOC容器,所以@Autowired不起作用,无法实现注入,要想使用@Autowired注解来注入测试类中的成员变量,就需要整合spring与Junit
- 导入spring整合Junit的jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
- 用Junit提供的一个注解把原有的main方法替换掉,替换为spring提供的 (@Runwith)
@RunWith(SpringJUnit4ClassRunner.class)
public class AccountServiceTest {
}
- 告知spring的运行器,spring和ioc的创建是基于xml还是注解的,并说明位置
@ContextConfiguration
locations:指定配置文件位置,加上classpath关键字,表示在类路径下
classes:指定注解类所在位置
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)
public class AccountServiceTest {
@Autowired
private IAccountService as;
}
特别注意:本文章是学习Spring视频教程 -IEDA版-4天-2018黑马SSM 所记录知识总结