【问题标题】:Testing controllers with integration tests使用集成测试测试控制器
【发布时间】:2013-06-18 14:38:28
【问题描述】:

我从事的项目由 3 层组成:表示 (asp.net mvc) -> 业务逻辑 -> 存储库

我们使用单元测试测试所有三个部分。

我们计划添加集成测试。 现在我们正在决定应该用它们测试哪个部分。

我们考虑下一个解决方案:

  • 测试控制器,在这种情况下,系统的所有三个部分都将 涉及
  • 测试业务逻辑,本例只涉及两部分

如果我们的核心用户很少,我会从第二种解决方案中获益。例如站点、移动版本、命令工具。在这种情况下,所有客户端都将使用经过良好测试的业务逻辑。

您认为哪种解决方案更好? 您能否描述一下您使用集成测试的经验。

谢谢。

【问题讨论】:

    标签: integration-testing


    【解决方案1】:

    我会说您的第一个选项应该是偏好。如果您要编写跨越多个层的进程内(即不是浏览器自动化)测试,您最好从“外部”开始,并尽可能轻松地通过尽可能多的层。通过调用你的控制器开始你的测试应该提供对你的系统在给定(例如)意外或不完整的用户输入的情况下的行为方式的洞察和保证。您还可以在您的操作返回的视图模型上执行断言,最大限度地提高测试的相关性和覆盖率。

    【讨论】:

      【解决方案2】:

      business logic -> repository: 集成测试是必要的,这里发现了很多严重的错误。通过识别错误的 SQL 查询,在这一层中还发现了许多与性能相关的错误。

      presentation: 对控制器测试的反应不一。我认为网页的手动或自动测试(通过编码的 UI)是必要的,但 UI 测试可能不会涵盖所有的控制器和业务逻辑。所以目前我们也在为控制器编写测试。进行控制器测试的另一个原因是 CodedUI 自动化测试或 UI 手动测试需要大量时间来执行。

      首先编写接口集成测试,然后是控制器测试,然后是编码 UI。 手动测试应该与所有这些活动同时进行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2013-04-18
        • 2013-02-12
        • 2019-02-02
        相关资源
        最近更新 更多