如何编写ASP.NET API集成测试

时间:2015-05-04 08:02:35

标签: asp.net api asp.net-web-api integration-testing

对于那些花时间阅读我的问题的人,我想指出,我正在编写集成测试而非单元测试。

使用由站点提供的Integration-test定义(位于问题的底部):

  

集成测试不使用模拟对象替换   服务依赖的实现。相反,集成测试   依赖于应用程序的服务和组件。的目标   集成测试是运用应用程序的功能   在正常的运行时环境中。

我的问题是为ASP.net web API编写集成测试的最佳实践是什么。目前我正在使用Filip提供的内存主机方法。 W.博客文章。

我的第二个问题是,如果你不是Mocking(msdn和其他网站明确说明,集成测试没有模拟数据库),你如何确保你的测试数据存在并且是正确的。互联网上充满了如何编写极其简单的集成测试的例子,但没有更复杂的api的例子(任何比返回1更多的东西)

参考网站: https://msdn.microsoft.com/en-us/library/ff647876.aspx
https://msdn.microsoft.com/en-us/library/vstudio/hh323698(v=vs.100).aspx http://www.codeproject.com/Articles/44276/Unit-Testing-and-Integration-Testing-in-Business-A http://blog.stevensanderson.com/2009/06/11/integration-testing-your-aspnet-mvc-application/

菲利普。 W. In-Memory-Hosting: http://www.strathweb.com/2012/06/asp-net-web-api-integration-testing-with-in-memory-hosting/

1 个答案:

答案 0 :(得分:1)

您是否看到我对at this other SO question here的回答。我将在下面提供以下附加信息。

在我们的发布管道中(使用Visual Studio Release Manager 2013),我们通过从头创建数据库(所有脚本)来从已知的测试脚本中提供夜间集成数据库 - 最初我们克隆了生产,但随着数据的增长,这太耗费时间了作为夜间整合构建的一部分。配置数据库之后,我们对集成VM Web服务器执行相同操作,并将最新版本部署到该环境。在这些出现后,我们再次从命令行运行我们的单元测试作为发布管道的一部分,包括用我在答案链接中描述的自定义动作过滤器装饰的测试。