spring 测试6
来源:互联网 发布:sqlserver数据库收缩 编辑:程序博客网 时间:2024/05/17 02:57
五、事务性单元测试
到目前为止,你已看到了相对简单的JUnit测试—它仅发生在用mock对象支持的一个控制器的上下文中。但是,如果测试一个Web组件只有在一个 事务性上下文(例如,通过依赖性注入与Hibernate集成到一起)中才有意义的情况又会怎么样呢?不必担心,Spring MVC为JUnit框架提供了一个体面的扩展集合—它能准确地提供依赖性注入和事务安全测试(也就是,任何更新在测试完成后都将被回滚)。
测试步骤:
让我们看一种假想的情形—你要实现一个组件(例如MyTransactionalController)测试,该组件运行在一个事务性的上下文中(也即,其方法调用的结果发生在一个事务内并且它应该在测试运行完后被回滚):
1.创建一个定制的JUnit类(MyTransactionalControllerTest),它扩展了Spring的JUnit扩展类
AbstractTransactionalSpringContextTests: |
2.为了实现从Spring内置的单元测试中发现Spring管理的bean,你需要重载getConfigLocations()方法并且返回上下文文件位置的String数组,请看如下:
protected abstract String[] getConfigLocations(){ |
3.拥有该类的一个测试属性及其相关联的getter和setter。由于 AbstractTransactionalSpringContextTests利用了auto-wiring(这是Spring框架的一个特性—能够 根据类属性的名字识别类依赖性并且用Spring bean填入相匹配的名字或ID)技术而且在测试时它将自动地解决类的依赖性问题,所以在Spring上下文文件中该类属性具有与Spring管理的 bean一样的名字并且在测试时每个属性都有一个适当命名的setter:
public MyTransactualController myTransactualController; |
4.就象你通常操作“普通的”JUnit测试一样实现测试方法:
|
注意,你是在调用可能会更新数据库的方法submitPayment。Spring的JUnit扩展(AbstractTransactionalSpringContextTests)将在这个测试方法结束后实现自动回滚。
5.如果你需要执行任何安装或清除任务,则可以重载AbstractTransactionalSpringContextTests的 onSetUpBeforeTransaction()或onSetUpInTransaction()方法。 AbstractTransactionalSpringContextTests将重载从TestCase继承来的setUp()和tearDown ()方法并且使其成为final类型。
六、小结
至此,你已经学习了如何使用Spring单元测试框架和Web组件mock对象。通过使用这两个工具,你将会极大地提高你的Web组件的开发效率。
- spring 测试6
- spring 测试
- spring 测试
- Spring测试
- Spring测试
- Spring 测试
- Spring测试
- spring 测试测试
- 【Spring】Spring高级话题-测试Spring项目
- struts+spring整合测试
- struts+spring整合测试
- JUnit 测试 Spring
- spring jdbcTemplate测试
- SPRING测试1
- spring 测试2
- spring 测试3
- spring 测试4
- spring 测试5
- spring 测试5
- BDC的批量导入
- SWT 和 JFace, 第 2 部分: 简介
- 文档创建,文件的打开, 保存
- CMMB手机电视自毁长城?
- spring 测试6
- NoteBook开发手记(一)
- 改变选中Treeview的节点的背景颜色
- 我的java 学习之路
- SOAP
- 爬上20楼,锻炼身体!
- post 的请求,垃圾注册是这样产生的
- Head First C# 中文版 图文皆译 第二章 page64
- STL vector 容器介绍