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来保存它。或者,您可以输入您的配置,如下所示|发布,|调试。

模式是[平台名称] | [配置名称],[平台名称] | [配置名称],...

相关问题