我有一个使用SpecFlow,NUnit和Coypu在Web应用程序上进行验收测试的项目。我已经通过Jenkins在构建服务器上构建了OK项目。 Jenkins调用一个在规格项目上运行msbuild的psake脚本,然后脚本调用nunit-console运行规格/测试,然后我想从SpecFlow生成一个报告。尝试生成测试执行报告时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调用失败,虽然与:
元素< ParameterGroup>元素< UsingTask之下>是无法识别的。 C:\ Program Files文件(x86)的\詹金斯\ \工作TheWebApp \工作区\网络\网站\ TheWebApp.nuget \ nuget.targets
正在使用谷歌搜索暗示,也许是与MSBuild的版本有问题的位(例如,here,here)。但我在我的psake脚本中有Framework "4.0"
,Specs项目的目标是.NET Framework 4.0,并且在构建步骤中构建得很好,所以我不确定为什么specflow似乎使用的是早期版本的msbuild。或者也许是其他地方的问题?
你尝试传递msbuild的完整路径吗? ('C:\ WINDOWS \微软。NET \ Framework64 \ v4.0.30319 \ MSBuild.exe') – KMoraz 2012-07-08 09:29:55
谢谢,这将是问题,但我不知道如何强制SpecFlow使用特定版本的msbuild。 – ngm 2012-07-11 10:40:56