【问题标题】:Unit testing - testing in isolation单元测试——隔离测试
【发布时间】:2010-02-05 01:10:01
【问题描述】:

我已经设置了多个层:

  • 网站
  • 应用/服务
  • 域(包含实体)
  • 持久性(包含存储库)

我正在使用从存根对象在内存中创建的数据单独测试持久层。

现在,我正在考虑测试我的网站层。我知道我应该单独测试它,我认为这意味着为它使用的应用程序层对象创建一个存根,但是这个存根需要它自己的一组内存数据,在持久层的存根中复制,我不想这样做复制并管理它。

所以我的问题是,被测对象是否应该始终使用来自下层的存根对象以隔离它们,它们通常是否有自己的数据集?或者我的被测 Web 方法可以调用应用层中的轻量级对象,该对象使用存根数据调用持久层?

感谢您的帮助。对我来说,这感觉就像是最后一点难题......

【问题讨论】:

    标签: unit-testing stub


    【解决方案1】:

    理想情况下,在单元测试中,每个被测对象都与其依赖项隔离开来。您不想认为您的被测主题已损坏,因为它的依赖项之一损坏并导致被测主题失败。如果您像这样进行测试,您可能会花费大量时间在错误的地方追踪错误。

    测试事物如何一起运行是集成测试的领域,而不是单元测试

    【讨论】:

    • 谢谢。我真的需要一次又一次地被提醒来习惯这种工作方式。我想我现在明白了
    【解决方案2】:

    或者我的被测 Web 方法可以调用应用层中的轻量级对象,该对象使用存根数据调用持久层?

    如果您这样做,我将不再将测试称为孤立的单元测试 - 如果测试失败,错误在哪里? - 但是一个集成测试。不要误解我,集成测试也很好,它只是有另一个目的。但是,如果您的目标是单独对网站层进行单元测试,您应该模拟/存根直接依赖项。

    【讨论】:

      【解决方案3】:

      设置测试数据可能是一项繁琐的任务。如果您使用 DotNet,您可以使用名为 NBuilder 的库来非常轻松快速地生成测试数据。它支持一个很好的流畅界面。你可以阅读更多关于它的信息here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-08
        相关资源
        最近更新 更多