对于那些花时间阅读我的问题的人,我想指出,我正在编写集成测试而非单元测试。
使用由站点提供的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/
答案 0 :(得分:1)
您是否看到我对at this other SO question here的回答。我将在下面提供以下附加信息。
在我们的发布管道中(使用Visual Studio Release Manager 2013),我们通过从头创建数据库(所有脚本)来从已知的测试脚本中提供夜间集成数据库 - 最初我们克隆了生产,但随着数据的增长,这太耗费时间了作为夜间整合构建的一部分。配置数据库之后,我们对集成VM Web服务器执行相同操作,并将最新版本部署到该环境。在这些出现后,我们再次从命令行运行我们的单元测试作为发布管道的一部分,包括用我在答案链接中描述的自定义动作过滤器装饰的测试。