【问题标题】:Integration test for instantiation of a type via DI container通过 DI 容器实例化类型的集成测试
【发布时间】:2009-11-27 08:40:50
【问题描述】:

我正在一个 ASP.NET MVC Web 应用程序上运行 TDD。

创建集成测试以通过 DI 容器(在我的例子中为 Castle Windsor)演示类型的正确实例化是标准做法吗?

如果是这样,你会模拟出容器,还是直接使用它?

或者……这只是出于某种原因没有完成吗?

谢谢。

【问题讨论】:

    标签: dependency-injection mocking


    【解决方案1】:

    测试驱动开发中的Test这个词通常被解释为UnitTest,而不是IntegrationTest,所以在纯TDD过程中我不认为编写和运行任何类型的集成测试是标准做法。

    这并不意味着编写和运行集成测试不值得 - 它只是不被视为 TDD 的标准做法。但是,如果您稍微扩大范围以涵盖一般的敏捷开发,大多数敏捷组织都将其视为维护和运行自动化验收测试的标准部分。

    像您询问的那样的集成测试非常适合这种类型的过程。您可能不想在您的开发机器上经常执行此操作,但仍要进行持续集成 (CI) 构建,或者至少每天构建一次(取决于复杂性)。

    当您将它们视为验收测试时,让您的 DI 容器按应有的方式解析整个堆栈是最有意义的 - 也就是说,在这种情况下不会涉及任何模拟:您必须测试真正的交易。

    然而,底线是:如果它适合你,那就去做。敏捷/精益开发与教条无关——它是关于不断寻找和应用使您的团队最高效的技术。虽然从其他人的错误和成功中吸取教训可能很有价值,但您最终必须试验并衡量最适合您团队的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-04
      • 2017-03-13
      • 2023-04-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      相关资源
      最近更新 更多