9

在很短的时间内,我将开始一个基于 Windows Azure 的项目。我想知道测试 Windows Azure 项目(在持续集成中(使用 TFS 构建服务器))的经验是什么?(最终使用 TDD)

我想知道的一些事情:

  • 您是否使用模拟(在您自己编写的包装类中)?
  • 您使用存储模拟器吗?
  • 您是否将服务部署到 Azure 并将测试从构建服务器运行到云?(费用呢)?

提前感谢!

4

1 回答 1

4

为 Windows Azure 之外的应用程序编写单元测试的良好实践同样适用。如果您对实际测试的内容有外部依赖项,则应该模拟并注入该依赖项以进行粒度单元测试。

例如,当我使用 Windows Azure 存储队列时,我将拥有一个用于与队列本身交互的接口,因此在使用队列服务的代码中,我可以使用该接口模拟子系统并使用依赖注入来注入嘲笑。这消除了在单元测试期间实际处理仿真器的必要性。在大多数情况下,使用队列的代码的实际具体实现只不过是一个非常薄的包装器。

我个人不会追求 100% 的测试覆盖率,所以我可能没有直接的单元测试来利用包装器的具体实现。在许多情况下,我尝试进行集成测试,这些测试将运行这些包装器并运行系统的多个方面协同工作。在某些情况下,我可以在模拟器中运行集成测试(例如,对于存储操作),但在某些情况下,它们只需在访问 Windows Azure 环境的情况下运行(在使用 ACS 或服务总线的情况下)。

理想情况下,您希望拥有一组可运行的脚本,以在 Azure 中启动最少的测试服务器、部署您的解决方案并执行无法在本地完成的集成测试。然后获取结果并让脚本关闭所有内容(或者如果需要,可以选择让它运行)。然后运行集成测试套件,该套件经常使用这些脚本来检测问题,但您当然不需要每次签入时都运行它们,除非您对始终运行测试环境感到满意。如果您对在 Azure 中运行的半永久性测试环境的成本感到满意,那么只需确保将脚本用于更新部署而不是删除和重新部署以降低成本(节省与部署发生)。

我相信这个问题是一个非常主观的问题,因为您可能会得到几种不同的意见。

于 2013-03-04T02:31:12.220 回答