我有一個WebAPI項目和一個VS測試項目的解決方案。Visual Studio:單元測試同一解決方案中的Web項目
我的測試使用RestSharp通過Url調用API,而不是實例化控制器本身並注入事物(上下文等)。
我的問題是,有沒有辦法告訴測試項目在測試運行開始時通過IIS Express啓動Web項目?目前我只運行兩個VS實例,其中一個預計在調試時啓動,另一個運行測試包
我有一個WebAPI項目和一個VS測試項目的解決方案。Visual Studio:單元測試同一解決方案中的Web項目
我的測試使用RestSharp通過Url調用API,而不是實例化控制器本身並注入事物(上下文等)。
我的問題是,有沒有辦法告訴測試項目在測試運行開始時通過IIS Express啓動Web項目?目前我只運行兩個VS實例,其中一個預計在調試時啓動,另一個運行測試包
我不會推薦使用網絡來測試Web API。你在測試中打開自己的潛力,你最終測試的不僅僅是服務本身。
但如果你真的必須這樣做,也許,以測試你的客戶端可以與API交換信息,那麼我建議你看看自託管服務:
http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api
自我託管讓您只需幾行代碼即可啓動Web API服務器,並且您可以讓測試在正確的位置啓動此服務器。在大多數情況下,這應該與在IIS Express中託管服務的行爲相同。但是有一些重要的區別。例如,您將無法使用您可能習慣的某些System.Web概念(如HttpContext.Current)。
更新:
我寫了一個博客張貼有關測試Web API服務,可以幫助 - http://blogs.msdn.com/b/youssefm/archive/2013/01/28/writing-tests-for-an-asp-net-webapi-service.aspx
希望有所幫助。
我知道這是一箇舊帖子,但我剛剛面對這個問題。如果/有人讀到這個,我可以提供更詳細的回答。
簡而言之..我創建了一個控制檯應用程序,引用單元測試程序集並通過反射和一個簡單的菜單系統,您可以運行任何一個測試。
然後我將多個啓動項目設置爲Web項目和控制檯項目。
然後,我可以在同一個會話中同時調試F5和單元測試和Web項目。沒有附加到需要多個解決方案的過程。
這很好,但我應該能夠從單元測試瀏覽器單元測試一個Web項目。 –
如果你想同時調試和測試服務,可考慮做這個
Debug
- >Detach All
。 IIS Express將繼續運行。Debug
→Attach to Process
。找到iisexpress.exe
並附上。但是,在分離的Web服務上丟失了「編輯並繼續」。
我強烈建議調查使用HttpClient做單元測試,而不是使用RESTSharp。 –
使用RestSharp,因爲這是我們在iOS和Android客戶端使用(通過單聲道) – keithwarren7
據我所知,但它只是HTTP,所以無論您使用HttpClient還是RESTSharp,服務器都應該表現相同。使用HttpClient的優點是所有的單元測試都可以在沒有任何網絡流量的情況下運行。 –