0

我一直在搜索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測試是否在我的本地開發框中手動運行時運行並通過。我的猜測是,轉換不會被啓動,或者在轉換運行和單元測試運行的時間軸上有某種東西。

我在這裏做錯了什麼?任何援助非常感謝!

回答

0

在您的構建定義中,您可能定義了要使用的配置。其中的一部分還定義了像Any CPU或x86這樣的平臺。正如解決方案中所示,Platform Any CPU有一個空間,在這個空間中,AnyCPU平臺沒有空間。

我發現解決這個問題的最好方法是讓平臺保持空白狀態,並只放入配置名稱。 VS會彈出一個警告,告訴你有數據缺失,你可以點擊Yes來保存它。或者,您可以輸入您的配置,如下所示|發佈,|調試。

模式是[平臺名稱] | [配置名稱],[平臺名稱] | [配置名稱],...

相關問題