Spring 整合Junit
junit 给我们暴露了一个注解,可以让我们替换掉它的运行器;我们需要依靠 spring 框架,因为它提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件在哪就行了。
一、使用步骤
导入junit的maven坐标,同时需要spring 中 aop 的 jar 包。
1. 使用@RunWith
注解替换原有运行器
@RunWith(SpringJUnit4ClassRunner.class)
public class TestApp {
}
2. 使用@ContextConfiguration
指定spring配置文件的位置
-
@ContextConfiguration
注解的属性- locations: 用于指定配置文件的位置。如果是类路径下,需要用 classpath:文件名
- classes: 用于指定注解的类。当不使用 xml 配置时,需要用此属性指定注解类的位置
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:applicationContext.xml"})
public class TestApp {
}
3. 使用@Autowired
给测试类中的变量注入数据
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class TestApp {
@Autowired
private ApplicationContext ac;
@Test
public void testSomeMethod() {
...ac.getBean("someBean")...
...
}
二、为何不讲测试类配置在xml中?
- 当我们在 xml 中配置了一个 bean,spring 加载配置文件创建容器时,就会创建对象。
- 测试类只是我们在测试功能时使用,而在项目中它并不参与程序逻辑,也不会解决需求上的问题,所以创建完了,并没有使用。那么存在容器中就会造成资源的浪费
- 基于以上两点,我们不应该把测试配置到 xml 文件中。