背景:
我有一个Flex应用程序,通过BlazeDS与Java后端进行通信。Flex客户机由一个包含视图和表示模型的flex客户机模块和一个单独的包含模型(value对象)和服务对象的flex服务模块组成。
我正在使用RemoteObjects为flex服务模块的FlexUnit4编写异步集成测试。在一些测试中,我修改测试数据并将其查询回来,以查看是否一切正常(这里显示的一种技术:http://saturnboy.com/2010/02/async-testing-with-flexunit4)
问题:
如何在每个FlexUnit4测试方法(或测试方法链)之前将数据库重置为已知状态?在我的Java服务器集成测试中,我通过组合DBUnit和Spring的事务来实现这一点--在每个测试方法之后进行回滚。但是,这些Flexunit集成跨越多个请求,因此涉及多个事务。
除非在后端实现集成测试服务API,否则如何实现。其他人肯定也遇到过这种情况吗?类似的问题以前曾被问过( Rollback database after integration (Selenium) tests ),但没有令人满意的答案。
发布于 2010-11-01 16:42:50
有几种选择:
-1开头并向下计数的序列生成器。测试之后,您可以删除主键< 0的对象。修改现有数据的测试中断。类似的方法是创建一个特殊的用户,或者,如果您有created时间戳列,那么初始数据必须在过去某个日期之前。不过,这需要额外的索引。
或者编写在实际服务器上运行并创建这些文件的测试用例。这将允许您跟踪在修改服务器或客户端上的代码时哪些文件更改。
在服务器上,编写测试,确保它将执行正确的DB modifications.
发布于 2010-11-01 18:12:16
根据测试数据库的大小,您可以自动化干净备份/还原,从而为您提供每次测试运行的确切环境。
我在当前的项目(不同的平台)上有这种方法,我们也用相同的方法测试数据模式更改脚本。
发布于 2010-10-29 20:27:40
我脱水了(我为自己的缺点找借口)。很抱歉,如果这个答案太接近“后端的集成测试服务API”响应,而您不想要的话。
成立flexUnit‘很久以前’的团队做出了选择,并根据我们的架构创建了解决方案,其中一些只适用于我们的基础设施。需要考虑的是: 1)我们所有的后端方法都返回相同的远程映射类。2)我们的大多数方法都有一个抽象的方法,告诉方法在方法的开头运行"begin transaction“(或不运行),在末尾运行"commit transaction”(不确定db块)。
后者可能不是最面向对象的解决方案,但下面是异步单元测试调用所做的事情:每个单元测试都调用相同的方法--包装器,我们传递--在方法名称/包-locale中,加上...args。一个beginTransaction完成了。调用该方法,将一个false传递给FE单元测试方法(忽略beginTransaction和commitTransaction行),运行所有内容,生成主“response”类并将其返回给单元测试方法。运行db-rollback,并将响应返回给单元测试。
我们所有的单元测试都是基于回滚事务。我不能告诉你他们在设置跳伞时遇到的问题,但这是我对schtuff如何工作的一般理解。
希望这能有所帮助。如果不是可以理解的。祝你好运,--杰里米
https://stackoverflow.com/questions/4009099
复制相似问题