2015-05-04 126 views
0

對於每個花時間閱讀我的問題的人,我想指出,我正在編寫集成測試而非單元測試。如何編寫ASP.NET API集成測試

使用集成測試的定義,通過網站(是在問題的底部)提供:

集成測試不使用模擬對象來代替 實現對服務的依賴性。相反,集成測試 依賴於應用程序的服務和組件。 集成測試的目標是在其正常運行時環境中執行應用程序 的功能。

我的問題是編寫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/

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

回答

1

您是否看過我的回覆at this other SO question here。我將在下面補充一些信息。

在我們的發佈管道(使用Visual Studio發佈管理器2013)中,我們通過從頭開始創建數據庫(所有腳本)從已知測試腳本提供夜間集成數據庫 - 最初我們克隆了生產,但隨着數據的增長,這太耗時了作爲夜間集成構建的一部分。在配置數據庫之後,我們對集成VM Web服務器執行相同操作,並將最新版本部署到該環境。在這些出現之後,我們再次從命令行運行我們的單元測試,作爲此次發佈管道的一部分,包括用鏈接的答案中描述的自定義操作過濾器修飾的測試。

+0

謝謝。你的回答確實給了我如何去做的一些難題,但我不會將它標記爲答案,因爲我想聽到更多關於此主題的意見。 – Stralos