Juit4 spring testContext 新特性及遇到的问题
来源:互联网 发布:温州炒房团历史知乎 编辑:程序博客网 时间:2024/05/17 02:17
Junit4搭配spring testContext,对于ssh应用的每个层面都能有效搭建单元测试。现简单记录如下:
用annotation的方式标记测试方法,不需要再继承TestCase父类,灵活度比较高。
Spring testContext提供了在unit test中读取applicationContext配置文件的方法,只要简单的使用@ContextConfiguration注明配置文件的位置即可,同样可以使用@Autowired就可以引用需要测试或使用的bean。
对于spring的dao层测试,spring testContext提供了AbstractTransationalJunit4SpringContexTests类,只要继承后,就可以对数据库操作进行单元测试。配合simpleJdbcTemplate(直接引用,父类已经生成好)直接执行sql语句到数据库中抓取数据进行验证。
特别需要提一下的是,从AbstractTransactionalJunit4SpringContextTest名字看,提供了与事务相关的功能,实际上是提供了事务回滚的功能,这意味着对数据库进行测试之后,所有数据库的数据将保持原状不受测试数据的污染。
不过,配置也提供了禁止事务回滚的选项,@Rollback(false),如果这样注明的话,对应的数据操作将被写入数据库。
以上是新特性的简单总结,下面讲讲遇到的问题。
在进行数据库测试的时候,因为使用了hibernate,它会对update操作进行延迟操作,做所有其他对数据库操作完成之后,再进行update动作,这样会导致需要验证的sql语句执行完了,被测试的update动作才执行,这种测试是无效的。解决方法就是,在测试类中引用sessionFactory, 在被测试的动作被调用后,直接调用sessionFactory.fulsh(), 强制hibernae提交操作,这样就能得到正确的结果。这样做的另外一个好处就是,不用修改被测试程序本身的逻辑,进而打乱了被测试程序原本的设计。
在对controller进行测试的时候,会遇到controller引用的bean不能初始化的情况,这时的controller是被直接new出来的,对容器里的bean自然是不可见的,这样就需要对controller进行小小的改动,如果controller是使用annotation的方式引用bean的话,需要改成对应的setXXXX方法,例如原来是
@Autowired
private myService ms
改成
private myService ms
@Autowired
public void setMyService(myService ms){
this.ms=ms
}
这样在单元测试是就可以通过调用setXXX方法注入容器中的bean,从而是测试顺利运行。
- Juit4 spring testContext 新特性及遇到的问题
- spring TestContext注解及框架
- Spring TestContext注解及框架
- ios9新特性及遇到的一些问题解决方案
- Spring TestContext
- spring testcontext
- Spring 2.0的新特性及一些点评
- spring 2.0 到3.0的新特性及理解
- Spring中遇到的问题及解决方法
- 解决Spring TestContext下运行JUnit4抛错(java.lang.NoClassDefFoundError)的问题
- 解决Spring TestContext下运行JUnit4抛错(java.lang.NoClassDefFoundError)的问题
- 解决Spring TestContext下运行JUnit4抛错(java.lang.NoClassDefFoundError)的问题
- JSF-Spring的新特性
- Spring 2.0 的新特性
- Spring 2.5新特性及架构图
- Spring 2.5新特性及架构图
- Spring 2.5新特性及架构图
- Spring 2.5新特性及架构图
- 嵌入式Linux下常用的交叉编译制作工具
- 获取当前屏幕分辨率
- 液晶显示器刷新率
- OpenGL实例程序
- java c标签用法
- Juit4 spring testContext 新特性及遇到的问题
- Linq练习题
- 一个组合类问题,对象添加不上,错误!,忘高手探讨!!
- NET中的三种Timer的区别和用法(转)
- Subversion和同步存储工具结合实现异地复制版本库
- CFile 类 文件操作 应用日志
- 初学编写linux内核模块
- 兼容ie6、ie7、ie8 和FF的本地上传图片预览,并客户端判断文件大小和文件格式
- XML 注释 注意事项