Spring Test 与 Junit
Spring Test整合使用Junit需要导入以下包:
spring-test:spring测试模块
junit-4.12.jar:Junit测试包
hamcrest-core-1.3.jar:Junit依赖该包
1 独立使用junit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.demo.spring;
import com.demo.spring.dao.impl.UserDao; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTest { @Autowired private static UserDao userDao;
@BeforeClass public static void init(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao = applicationContext.getBean("userDao", UserDao.class); }
@Test public void testAddUser(){ userDao.addUser("test",13); } }
|
2 Spring test 集成 junit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package com.demo.spring;
import com.demo.spring.dao.impl.UserDao; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml")
public class SpringTestJunit {
@Autowired private UserDao userDao;
@Test public void test(){ userDao.addUser("testJunit",19); } }
|
Spring整合Junit使用方法
- 继续使用 Junit4 测试框架,包括其 @Test 注释标签和相关的类和方法的定义,这些都不用变
- 通过 @RunWith(SpringJUnit4ClassRunner.class) 来启动 Spring 对测试类的支持
- 通过 @ContextConfiguration 注释标签来指定 Spring 配置文件或者配置类的位置
- 通过 @Transactional 来启用自动的事务管理,测试数据自动回滚
- 可以使用 @Autowired 自动织入 Spring 的 bean 用来测试
不再需要:
- 手工加载 Spring 的配置文件
- 手工清理数据库的每次变更
- 手工获取 application context 然后获取 bean 实例