【问题标题】:Incite database failure for integration test为集成测试煽动数据库失败
【发布时间】:2008-11-05 06:56:15
【问题描述】:

在运行集成测试时(在这种情况下,Web 服务与 JDBC 通信)如何强制数据库抛出错误,以便检查产生的肥皂故障?

我正在使用 Spring 的事务测试框架,所以只发出 DROP TABLE whatever; 来破坏它是不合理的吗? :D

【问题讨论】:

    标签: jdbc soa integration-testing spring-test


    【解决方案1】:

    根据我的经验,这是模拟对象的绝佳用途。特定情况下,您需要导致特定故障以测试您的对象(在单元测试的情况下)或对象集(在集成测试的情况下)将如何处理特定故障。最好完全控制失败,而不是在集成测试中强制失败的特定情况。

    我最近在使用实体框架时遇到了类似的困境。通过为实体创建模拟对象,我能够在运行某些测试时强制在方法调用期间引发异常,以测试与数据库交互的失败条件。这不是处理 Spring 的事务框架的答案,但我相信同样的原则也适用。

    【讨论】:

    • 我的单元测试涵盖了可以模拟的内容。这是部署在 QA 环境中的最终测试,目的是查看所有内容是否协同工作。
    【解决方案2】:

    拔掉数据库服务器的网线会不会很费劲?这很好地模拟了“数据库死亡”。

    【讨论】:

    • 是的,太多了,因为会有其他东西访问它。 (别介意在我的情况下我们无法访问物理服务器基础架构)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2018-08-20
    • 2010-09-08
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多