【发布时间】:2015-02-10 23:02:20
【问题描述】:
我有一个项目正在使用 SpecFlow、NUnit 和 Coypu 对 Web 应用程序进行验收测试。我已经通过 Jenkins 在构建服务器上构建了项目。 Jenkins 调用 psake 脚本在 specs 项目上运行 msbuild,然后脚本调用 nunit-console 来运行 specs/tests,然后我想从 SpecFlow 生成报告。
Framework "4.0"
task Default -depends RunSpecs
task BuildSpecs {
$env:EnableNuGetPackageRestore = "true"
msbuild /t:Rebuild ReturnsPortal.Specs.csproj
}
task RunSpecs -depends BuildSpecs {
exec { & "C:\path\to\NUnit 2.5.9\bin\net-2.0\nunit-console-x86.exe" /labels /out=TestResult.txt /xml=TestResult.xml .\bin\Debug\TheWebApp.Specs.dll }
exec { & "C:\path\to\SpecFlow\1.8.1\specflow.exe" nunitexecutionreport TheWebApp.Specs.csproj /out:SpecResult.html }
}
最后一次对 specflow.exe 的 exec 调用失败了,结果如下:
元素
下的元素 无法识别。 C:\Program Files (x86)\Jenkins\jobs\TheWebApp\workspace\Web\Sites\TheWebApp.nuget\nuget.targets
一些谷歌搜索提示可能是使用的 msbuild 版本存在问题(例如here、here)。但是我的psake脚本中有Framework "4.0",并且Specs项目的目标是.NET Framework 4.0,它在构建步骤中构建良好,所以我不确定为什么specflow似乎使用的是早期版本的msbuild。或者可能是其他地方的问题?
【问题讨论】:
-
您是否尝试将完整路径传递给 msbuild? (
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe) -
谢谢,这就是问题所在,但我不知道如何强制 SpecFlow 使用特定版本的 msbuild。