2013-11-28 61 views
3

環境:ASP.NET MVC4時,Visual Studio 2013如何啓動我的ASP.NET MVC應用程序中的編碼的UI測試

我想要寫一個測試我的MVC應用程序編碼的UI測試。測試需要做的第一件事是啓動我的應用程序(就像我按Ctrl-F5一樣)。這意味着編碼的UI測試需要:

  1. 啓動IIS Express來託管我的應用程序。

  2. 導航到http://localhost:xxxx,其中xxxx是我的應用程序的當前端口號,IIS Express作爲託管

我會假設有一些神奇的烤成CUIT框架,可以很容易地運行當前應用程序(好像我按Ctrl-F5)作爲我的測試中的「步驟」,但我還沒有找到它。

因此,要解決項目1,我已經找到了NuGet軟件包Trackyon CUIT Helpers

爲了解決第2項,我知道我可以使用此代碼來發動我的網站在一個新的瀏覽器窗口:

BrowserWindow.Launch(new System.Uri("http://localhost:4892")); 

但我不想硬編碼的端口號。 如何以編程方式查找我的URL?或者更一般地說,在Coded UI測試期間,啓動由IIS Express託管的瀏覽器窗口中運行MVC應用程序的「正確」方式是什麼?

回答

0

我不確定你爲什麼要這麼做,如果你解釋爲什麼你想這樣做,它會有所幫助。

我建議您設置某種持續集成過程,它會自動部署最新版本的Web應用程序,然後自動運行測試。我有一個專用的IIS服務器,它託管着每個Web應用程序的最新版本,它是由TeamCity自動構建的,當對版本控制提交更改並隨後使用Web Deploy部署到IIS服務器時,它會自動構建測試套裝並運行它針對最新版本的Web應用程序。

這個更好的原因之一是CUIT中的一部分搜索條件通常是URI,但是當然您可以更改它們,但是如果測試版本正在測試已發佈的頁面版本,你越接近真實的環境越好。

+0

我想這樣做,因爲我花了30年的時間在Big Aerospace開發實時仿真軟件,IT團隊纏繞着我,開發一個複雜的網站的單人商店。我花了去年的時間學習了一種全新的網頁開發技術字母表,我可能會指出,這種技術的發展速度比我能採用的還要快。在我的頭腦簡單的「開發/測試/部署」大腦中,在我的開發環境中運行UI測試似乎是合理的,就像我運行單元測試一樣。我不急於挖掘另一種技術(CI)。嘆息... –

+0

這很明顯,爲什麼Bob.at.SBS想這樣做。在他的開發機器上編碼時運行測試,無需提交更改或設置自動構建 – n00b

1

我知道你問的是「好像我按Ctrl-F5」那麼爲什麼不呢?

編碼的UI可以做CTL F5這樣:

Keyboard.SendKeys("^{F5}"); 
+0

感謝SendKeys代碼示例!當然,它只適用於VS IDE有焦點的情況;如果我有多個測試,並且在每次測試開始時使用它,我只能確信它會在第一次測試開始時工作(假設我手動與VS IDE交互以開始測試)。當第一次測試完成時,不保證IDE將重新獲得焦點... –

+0

您可以像在測試中的應用程序一樣與IDE交互,並直接設置焦點,或者單擊窗口中的。 – yonitdm

0

我把在「服務定位器」模式,其在從配置文件應用程序的所有服務提供URL。 然後團隊中的每個開發人員都可以用本地版本替換全球提供的服務。 當你的機器上運行測試時,他們會看你的IIS Express

相關問題