【发布时间】:2008-11-05 06:56:15
【问题描述】:
在运行集成测试时(在这种情况下,Web 服务与 JDBC 通信)如何强制数据库抛出错误,以便检查产生的肥皂故障?
我正在使用 Spring 的事务测试框架,所以只发出 DROP TABLE whatever; 来破坏它是不合理的吗? :D
【问题讨论】:
标签: jdbc soa integration-testing spring-test
在运行集成测试时(在这种情况下,Web 服务与 JDBC 通信)如何强制数据库抛出错误,以便检查产生的肥皂故障?
我正在使用 Spring 的事务测试框架,所以只发出 DROP TABLE whatever; 来破坏它是不合理的吗? :D
【问题讨论】:
标签: jdbc soa integration-testing spring-test
根据我的经验,这是模拟对象的绝佳用途。特定情况下,您需要导致特定故障以测试您的对象(在单元测试的情况下)或对象集(在集成测试的情况下)将如何处理特定故障。最好完全控制失败,而不是在集成测试中强制失败的特定情况。
我最近在使用实体框架时遇到了类似的困境。通过为实体创建模拟对象,我能够在运行某些测试时强制在方法调用期间引发异常,以测试与数据库交互的失败条件。这不是处理 Spring 的事务框架的答案,但我相信同样的原则也适用。
【讨论】:
拔掉数据库服务器的网线会不会很费劲?这很好地模拟了“数据库死亡”。
【讨论】: