08 Spring整合Junit
1、原始Junit存在的问题
每个测试方法都有以下两行代码:
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
IAccountService as = ac.getBean("accountService",IAccountService.class);
用于获取spring容器以及对应的Bean,每次都要写,代码冗余
2、解决方案
1、让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它
相当于(ApplicationContext ac = new ClassPathXmlApplicationContext(“bean.xml”);)
2、将需要进行测试Bean直接在测试类中进行注入
相当于(IAccountService as = ac.getBean(“accountService”,IAccountService.class);)
3、具体步骤
-
导入spring集成Junit的坐标
依赖的jar包邮junit,还有spring-test(用于集成Junit的jar包)
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.2.12.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
-
使用@Runwith注解替换原来的运行器
@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
-
使用@ContextConfiguration指定配置文件或配置类
@ContextConfiguration(“classpath:applicationContext.xml”)
-
使用@Autowired注入需要测试的对象
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestClass {
@Autowired
private UserDaoService userService;
@Test
public void test1() {
userService.serviceFunc();
}
}