JUnit结合Spring TestContext使用
前言:本文章需要JUnit单元测试框架的基础知识,若读者还不具备,请阅读笔者的JUnit文章:http://ray-yui.iteye.com/blog/1914106
UnitTest系列文章:
使用JUnit开发单元测试:http://ray-yui.iteye.com/blog/1914106
使用DBUnit扩展JUnit:http://ray-yui.iteye.com/blog/1914979
使用EasyMock扩展Junithttp://ray-yui.iteye.com/blog/1916170
使用Cactus测试Servlethttp://ray-yui.iteye.com/blog/1917515
使用Cobertura生成测试覆盖率报告http://ray-yui.iteye.com/blog/1921958
什么是Spring TestContext?
Spring TestContext是Spring提供的一套基于注解的Test框架,Spring TestContext有非常好的兼容性,可以无缝兼容JUnit,TestNG等单元测试框架,而且在其基础上增加更多的功能
Spring TestContext为我们带来什么?
在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 TestContext使用:
首先为Maven增加Spring的依赖,由于Spring有众多依赖,这里就不给出代码了
以下为Spring TestContext的代码