2015-06-12 191 views
1

我的團隊正在爲我們的其中一個網站構建SpecFlow測試的迴歸套件,並在當地進行測試。我們一直試圖讓構建服務器(TFS 2013構建服務器)能夠在我們簽入代碼時運行這些測試。我們還沒有能夠得到這個工作。爲什麼我的測試在構建服務器上運行時失敗?

本地我們有我們在NUnit框架上運行的測試,我們認爲它們在構建服務器上的工作原理是一樣的。看起來,構建服務器只想在VS Test Runner上運行測試,該測試無法每次運行我們的SpecFlow測試。

如果我遠程登錄到構建服務器並在VS中針對SpecRun運行SpecFlow測試,則測試可以工作並通過。我們也一直在玩構建定義,但一直沒有運氣。需要設置什麼才能在代碼簽入時運行它?

這裏是我們的模式匹配爲我們SpecFlow測試項目: enter image description here

這裏是我們的構建輸出VS測試跑步者的圖像正試圖執行我們的SpecFlow測試之一: enter image description here

更新:我們有我們的測試在構建服務器上運行。然而,我們的測試,實際上是試圖打我們的網站不斷生成以下錯誤:

試驗方法 AccessTheNDCHomePage扔了異常: OpenQA.Selenium.WebDriverException:HTTP請求爲URL http://localhost:7055/hub/session/ae10bda6-c46c-4c35-bd9f-f2f9400767ef/url遠程webdriver的服務器超時60秒後。 ---> System.Net.WebException:操作已在System.Net.HttpWebRequest.GetResponse() 超時 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest的要求)

四處尋找在線完後似乎這可能是因爲Firefox更新到版本38和/或最近的Selenium/WebDriver更新。有沒有人有任何關於解決這個問題的信息或提示?

+0

這些UI測試還是單元測試?您是否在使用NUnit測試運行器或NuGet軟件包的Vsix軟件包(https://www.nuget.org/packages/NUnitTestAdapter/)? – jessehouwing

+0

這些是使用nuget Nunit包運行的UI測試。 – Spen

+1

如果您正在運行ui測試,請確保您的構建代理已配置爲運行交互式,並且構建代理已登錄,未鎖定且未啓用屏幕保護程序。或者,如果您的測試使用硒,請將它們配置爲使用Phantom,它可以在沒有交互的情況下運行。 – jessehouwing

回答

1

首先,您需要了解SpecFlow是什麼。它基本上是一個單元測試生成工具。它使用config中定義的語言生成單元測試。

如果您在解決方案中編寫了簡單的NUnit測試,您需要做些什麼才能讓它們在TFS上運行?你將不得不在生成服務器上有一個NUnit運行器,並配置TFS來使用它。 SpecFlow測試沒有什麼不同。

那麼解決方案呢?要麼在本地生成MSTest格式的測試,然後在TFS中檢查這些測試時將運行它們。如果你不想這樣做,那麼set TFS up to be able to run NUnit flavour tests

編輯

這聽起來好像當你說「無法運行」的specflow測試,這些都不是失敗的,但沒有被發現。可能需要調整包含specflow測試的程序集名稱,以便tfs中的當前模式找到測試程序集,或者添加過濾器以允許TFS找到您的新程序集。

+0

我們有一個單獨的單元測試項目,其中包含一些NUnit測試。當我們檢查代碼並通過時,這些測試全部運行。我認爲,如果我們的SpecFlow測試運行在NUnit上,它們也會起作用,但似乎並非如此。 – Spen

+0

嗯。真奇怪。那麼你可能需要提供'失敗'的細節 –

1

如果您已經可以使用相同的解決方案構建並運行其他nUnit測試,那麼您只能有一個模式匹配問題。

該構建指定了要在其中查找測試的程序集名稱模式。如果您將其更改爲包含「spec」,那麼您的測試將運行。

在XAML構建它位於構建定義編輯器的進程選項卡上。在新的構建系統中,選擇「VS Test」任務並在那裏編輯它。

+0

構建找到我們的SpecFlow項目,並試圖運行測試。我附上了一些屏幕截圖,顯示了我們的模式匹配以及構建服務器在嘗試運行SpecFlow測試時的失敗。 – Spen

0

下面是一些問題和解決方案,我們發現建立SpecFlow我們構建服務器上:

  • 構建服務器不會永遠承認我們SpecFlow測試項目 - 設置SpecFlow的目標平臺測試到x86似乎解決這個問題

  • WebDriver 60秒後超時錯誤 - 我仍然在本地得到這個,當我們嘗試通過我們的生成服務器上的瀏覽器運行我們的測試仍然發生。我們能夠通過構建服務器對我們的Selenium Grid以及SauceLabs運行我們的測試。如果我找到解決方案,我會更新我的答案。

+0

嗨Spen。我是否認爲你確實設法讓Specflow測試在你的構建服務器上運行,它只是花了一些手段?此外,您是否使用SpecRun或者是否設法在沒有它的情況下執行此操作? – Stu1986C

相關問題