HDa*_*ave 3 java database apache-flex integration-testing flexunit4
背景:
我有一个Flex Web应用程序,通过BlazeDS与Java后端进行通信.Flex客户端由一个flex-client模块和一个独立的flex-service模块组成,该模块包含视图和表示模型,这些模块包含模型(值对象)和服务对象.
我正在使用FlexUnit4为flex-service模块的RemoteObjects编写异步集成测试.在某些测试中,我修改测试数据并查询它以查看是否一切正常(此处显示的技术:http://saturnboy.com/2010/02/async-testing-with-flexunit4)
题:
在每个FlexUnit4测试方法(或测试方法链)之前,如何将数据库重置为已知状态?在我的Java服务器集成测试中,我通过DBUnit和Spring Test的事务的组合来做到这一点 - 在每个测试方法之后回滚.但是,这些Flexunit集成跨越多个请求,从而跨越多个事务.
如果没有在后端实现集成测试服务API,那么如何实现呢?当然其他人也遇到过这个问题?之前已经提出了类似的问题(集成后的回滚数据库(Selenium)测试),但没有令人满意的答案.
有几种选择:
如果对主键使用序列:在数据库加载了测试数据后,删除序列生成器并将其替换为以启动-1和倒计时的序列生成器.测试后,您可以删除主键<0的对象.中断修改现有数据的测试.
类似的方法是创建一个特殊用户,或者如果你有created时间戳列,那么初始数据必须在过去的某个日期之前.但是,这需要额外的索引.
在服务器上使用可以快速擦除的数据库(例如H2).添加可以从客户端调用的服务API以重置数据库.
添加撤消到您的Web应用程序.这是一项非常努力但非常酷的功能.
使用允许使用单个命令(如Lotus Notes)及时移回的数据库.
根本不要使用数据库.而是编写一个代理服务器,它将使用正确的输出响应正确的输入.向您的真实服务器添加一些代码,将交换的数据写入文件并从中创建测试.
或编写针对真实服务器运行并创建这些文件的测试用例.这将允许您在修改服务器或客户端上的代码时跟踪哪些文件发生更改.
在服务器上,编写测试以确保它将执行正确的数据库修改.
类似于"根本没有数据库",隐藏所有访问数据库层中DB的代码并使用接口来访问它.这允许您编写一个模拟层,其行为类似于真实数据库,但将数据保存在内存中.听起来很简单,但通常是很多工作.
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |