集成测试ASP.NET MVC应用程序

时间:2011-04-13 05:02:43

标签: asp.net-mvc unit-testing testing integration-testing

我需要一些有关为当前ASP.NET MVC应用程序编写集成测试的有效方法的建议。我们的架构包括:

  • 控制器下方的服务层
  • 服务层使用存储库和消息队列(有时)将消息发送到外部应用程序。

我认为应该做的是:

  • 单独编写所有部分的行为单元测试。因此,例如,我们应该在模拟存储库和消息队列时对服务层进行单元测试。

  • 控制器也是如此。因此,我们模拟服务层并对Controller进行单元测试。

  • 最后,我们针对真实数据库和针对真实消息队列的Message Queue类编写针对存储库的单独集成测试,以确保它们成功地持久保存/检索数据。

我的问题:

  • 我们需要编写其他类型的集成测试吗?

  • 我们是否还需要使用真实的存储库和消息队列编写服务集成测试?

  • 我们是否仍然需要使用真实服务(实际的存储库和消息队列组成)为控制器编写集成测试。

任何建议都将不胜感激。

干杯

3 个答案:

答案 0 :(得分:1)

在办公室,我们不会对真实服务进行测试。

  • 我们在服务方面进行了测试
  • 我们正在测试控制器作为单元测试,我们在这些单元测试中使用mock
  • 然而,我们没有集成测试:-(

我们被建议不要使用真实服务进行测试,我们使用Rhino Mocks来模拟控制器操作中调用方法的答案。

所以问题仍然是关于如何以良好的方式进行集成测试。

也许这可以帮到你:

http://www.codeproject.com/Articles/98373/Integration-testing-an-ASP-NET-MVC-application-wit.aspx

但我仍在寻找对其可能性的更好理解。

答案 1 :(得分:1)

我正在使用Ivonna来测试各种级别的隔离。我能够测试具有某些特定POST数据的特定Url使用预期参数命中预期的Action方法,同时我能够存根/模拟外部服务。

答案 2 :(得分:0)

我一直在使用SpecsFor.MVC进行集成测试。基本上,您在测试类中编写代码,框架运行浏览器将C#解释为浏览器操作。它的使用和设置非常简单。