Tôi đã có một dự án sử dụng SpecFlow, NUnit và Coypu để thực hiện các kiểm tra chấp nhận trên một ứng dụng web. Tôi đã có dự án xây dựng OK thông qua Jenkins trên một máy chủ xây dựng. Jenkins gọi một script psake chạy msbuild trên dự án specs, sau đó script gọi nunit-console để chạy các thông số/test, và sau đó tôi muốn tạo một báo cáo từ SpecFlow.luồng không thành công khi cố gắng tạo báo cáo thực hiện kiểm tra
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 }
}
Đó gọi exec cuối cùng để specflow.exe thất bại mặc dù, với:
Yếu tố < ParameterGroup> bên dưới yếu tố < UsingTask> là không được công nhận. C: \ Program Files (x86) \ Jenkins \ việc \ TheWebApp \ workspace \ Web \ Sites \ TheWebApp.nuget \ nuget.targets
Một chút googling gợi ý rằng có lẽ đó là một vấn đề với các phiên bản msbuild đang được sử dụng (ví dụ: here, here). Nhưng tôi có Framework "4.0"
trong kịch bản lệnh psake của mình và dự án Specs đang nhắm mục tiêu .NET Framework 4.0 và nó xây dựng tốt trong bước xây dựng, vì vậy tôi không chắc chắn tại sao specflow dường như đang sử dụng phiên bản trước của msbuild. Hoặc có lẽ là vấn đề ở một nơi khác?
bạn đã thử chuyển đường dẫn đầy đủ tới msbuild chưa? ('C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe') – KMoraz
Cảm ơn, đó sẽ là vấn đề, tuy nhiên tôi không biết làm thế nào để lực lượng SpecFlow sử dụng một phiên bản nhất định của msbuild. – ngm