我一直在搜索Google,在Stack Overflow上閱讀各種問題(和答案),並掃描SlowCheetah NuGet頁面,GitHub問題列表,以及效用作者的博客,我仍然無法找到一個答案來確切地說明是什麼導致了我的問題。在TFS 2013持續集成構建期間,SlowCheetah轉換沒有在單元測試項目上執行
我有一個託管在TFS 2013 Git存儲庫中的解決方案。當一個特定的分支被推送到TFS服務器時,它會啓動一個自動構建和部署到構建站點。所有這一切都很好。它也會啓動所有的單元測試,所有的運行都沒有問題。
也就是說,直到我到SpecFlow華廷測試...
測試踢出沒有問題,我已成立運行華廷服務器在瀏覽器中測試交互。這一切都有效。問題在於,WatiN測試點擊的網站位於Build服務器上,它與我在本地開發箱(也是來自測試服務器,這是第三個URL)上使用的URL不同。我在單元測試項目的App.Config中設置了站點URL(這是一個基於MSTest的項目)。我還爲每個目標環境設置了XDT轉換文件,其中包括有問題的Build環境。
當我推送到TFS或手動啓動構建時,一切都運行良好,直到它到達SpecFlow測試。這些特定的測試開始,如果我實際登錄到作爲構建服務器的虛擬機託管服務器,當構建和測試作爲構建/測試用戶運行時,我實際上可以看到瀏覽器啓動。我還可以簡單地在Internet Explorer中看到「此頁面無法顯示」消息,這不是預期的行爲(我應該看到應用程序的登錄頁面)並且測試失敗。
再看看它,我開始顯而易見 - 它擊中了正確的網站嗎?那麼,深入瞭解服務器上的構建文件夾,我能夠驗證轉換不起作用 - app.config文件具有開發機器的站點URL,而不是Build環境的URL。
Web項目的轉換ARE正在工作 - 正在爲前端Web應用程序和後端服務層應用程序填充構建環境的更改,並且他們工作 - 我可以在構建服務器在瀏覽器中。但是這些項目不使用SlowCheetah,而是使用內置的web.config轉換。單元測試項目已安裝SlowCheetah NuGet軟件包;它似乎沒有任何原因的工作。
這裏的的app.config文件有問題的單元測試項目:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
</configSections>
<appSettings>
<add key="SiteUrl" value="http://dev.server.url/" />
</appSettings>
<!-- Spec-Flow Configuration -->
<specFlow>
<unitTestProvider name="MsTest" />
</specFlow>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.5022.0" newVersion="2.0.5022.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
配置轉換文件app.Build.config如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="SiteUrl" xdt:Locator="Match(key)" xdt:Transform="SetAttributes" value="http://build.server.url/" />
</appSettings>
</configuration>
這些配置文件對我來說看起來不錯,所以我不認爲這些文件的格式有問題。我還可以驗證SpecFlow測試是否在我的本地開發框中手動運行時運行並通過。我的猜測是,轉換不會被啓動,或者在轉換運行和單元測試運行的時間軸上有某種東西。
我在這裏做錯了什麼?任何援助非常感謝!