我有一个使用 SpecFlow、NUnit 和 Coypu 对 Web 应用程序进行验收测试的项目。我已经通过 Jenkins 在构建服务器上构建了项目。Jenkins 调用一个在 specs 项目上运行 msbuild 的 psake 脚本,然后该脚本调用 nunit-console 来运行规范/测试,然后我想从 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 调用失败了,原因是:
元素 <UsingTask> 下的元素 <ParameterGroup> 无法识别。C:\Program Files (x86)\Jenkins\jobs\TheWebApp\workspace\Web\Sites\TheWebApp.nuget\nuget.targets
一些谷歌搜索提示可能是正在使用的 msbuild 版本存在问题(例如这里,这里)。但是我Framework "4.0"
在我的 psake 脚本中有,并且 Specs 项目的目标是 .NET Framework 4.0,并且它在构建步骤中构建得很好,所以我不确定为什么 specflow 似乎使用的是早期版本的 msbuild。或者可能是其他地方的问题?