代码之家  ›  专栏  ›  技术社区  ›  Tollo

我该把我的嘲笑放在哪里?

  •  7
  • Tollo  · 技术社区  · 15 年前

    我正在努力让mock工作,为了一个改变,我想知道人们通常把他们的mock类放在哪里。我似乎有三个基本的选择,但似乎都不管用。

    我可以把它们放在应用程序集本身中,在这种情况下,它们随应用程序一起发布,这看起来很糟糕,但它们在最终构建期间可用于单元测试,并且没有循环引用。 这似乎是最简单的方法。

    我可以创建一个单独的模拟程序集,以便它们在单元测试期间可用,可以从应用程序和测试应用程序中使用,但我最终不得不将所有实际类型移动到此程序集,或者创建循环引用。

    我可以将它们放在测试程序集中,但是它们不能从应用程序本身使用,因此我不能将它们用作构建应用程序块的过程。

    我倾向于尝试使用mock来帮助开发系统和测试部分,因此我很难知道把它们放在哪里。此外,所有最终版本的代码都必须通过单元测试过程运行,因此我需要在构建周期中提供模拟。

    有没有人想过模拟类应该放在哪里?

    T型

    3 回复  |  直到 15 年前
        1
  •  11
  •   adriaanp    15 年前

    模拟应该放在单元测试项目中。应用程序不应依赖于模拟对象。通常,应用程序将使用接口,而mock将实现这些接口。您的应用程序不需要或应该引用您的测试项目。

        2
  •  2
  •   Blue Clouds    7 年前

    嘲弄应该保存在 . 我们一共有三种选择

    1. 单元测试项目中的模拟

      如果UI项目需要使用它来启动(例如:mock service/partial integration test/smoke test),它将不起作用。即使测试项目是通过依赖注入在配置文件中引用的,我们也不希望将单元测试DLL带到其他环境中。现在更多的关注点是集成测试 Unit tests are less productive ,这当然不在本主题的范围之内,但我们应该意识到mock不仅仅是关于单元测试的。

    2. 服务项目)

      开发人员可能会不小心忘记删除mock。例如:一个新开发人员尝试mock,却忘记将其包含在依赖项配置文件中。让我们不要把它留给机会,因为它会阻碍球队的扩张。

    3. .

      但是 是的,当我们想确保上线时,我们可以从部署中删除模拟项目(或dll)。这样,如果任何项目或配置文件意外引用了mock, 我们得到运行时错误 . 这有助于把它扼杀在萌芽状态。

        3
  •  1
  •   RB.    14 年前

    我们在项目中所做的就是确定 外部的 依赖关系。内部依赖项的mock放在单元测试项目中(或者一个单独的mock项目,如果它们在整个解决方案中使用的话)。外部依赖项的模拟进入应用程序本身,然后用于部署和集成测试。

    内部依赖几乎是其他一切。

    推荐文章