什么是Spring TestContext?
Spring TestContext是Spring提供的一套基于注解的Test框架,Spring TestContext有非常好的兼容性,可以无缝兼容JUnit,TestNG等单元测试框架,而且在其基础上增加更多的功能
在Spring应用大行其道的今天,使用Spring来构建应用已经是再普通不过的事情,但当使用JUnit,TestNG等传统的单元测试技术和Spring进行结合的时候,就会出现很多并不如意的事情
- 1.Spring容器初始化问题:此问题已于JUnit4中被解决,通过使用@BeforeClass 可以有效防止Spring容器被多次初始化的问题
- 2.硬编码获取Bean:此问题是由于JUnit并不兼容Spring,所以当单元测试运行的时候,无法解释Spring独有的注解,从而需要使用硬编码来获取Bean
- 3.数据现场破坏:JUnit当中可以使用DBUnit来进行数据现场维护的解决方案, 详情可以通过笔者的DBUnit使用了解DBUnit,Spring TestContext通过AOP声明式事务来对单元测试进行回滚,有效的解决了数据现场的问题
- 4.事务:通常我们的单元测试都需要和数据库进行交互,但传统的JUnit的组成单元为TestCase,并不存在事务的概念,而我们大多数情况下都需要观察事务的执行过程或总体的性能,特别是对长事务模块的测试, Spring TestContext允许单元测试支持事务的控制
还好,Spring 提供了单元测试的强大支持,主要特性包括:
- 支持主流的测试框架 Junit 和 TestNG
- 支持在测试类中使用依赖注入 Denpendency Injection
- 支持测试类的自动化事务管理
- 支持使用各种注释标签,提高开发效率和代码简洁性
- Spring 3.1 更是支持在测试类中使用非 XML 配置方法和基于 Profile 的 bean 配置模式
Spring TestContext 测试框架体系结构
Spring TestContext 测试框架核心类
TestContext 测试框架的核心由 org.springframework.test.context 包中三个类组成,分别是 TestContext 和 TestContextManager 类以及 TestExecutionListener 接口。
- TestContext:它封装了运行测试用例的上下文,