首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当试图生成测试执行报告时,specflow失败

当试图生成测试执行报告时,specflow失败
EN

Stack Overflow用户
提问于 2012-07-06 13:33:36
回答 2查看 6.8K关注 0票数 8

我有一个使用SpecFlow、NUnit和Coypu在web应用程序上进行验收测试的项目。我已经在一个构建服务器上通过Jenkins获得了项目构建OK。Jenkins调用一个psake脚本,该脚本在specs项目上运行msbuild,然后调用nunit-控制台来运行规范/测试,然后我想从SpecFlow生成一个报告。

代码语言:javascript
复制
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:\程序文件(x86)\Jenkins\jobs\TheWebApp\workspace\Web\Sites\TheWebApp.nuget\nuget.targets

一些谷歌提示,这可能是使用msbuild版本(例如这里这里)的一个问题。但是我的psake脚本中有Framework "4.0",而Specs项目的目标是.NET Framework4.0,它在构建步骤中构建得很好,所以我不知道为什么specflow似乎在使用早期版本的msbuild。或者也许是别的地方出了问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-11 10:44:41

这是我的答案,来自SpecFlow维基

对于.NET 4.0项目很重要:因为specflow.exe是为.NET 3.5编译的,所以默认情况下它不能加载.NET 4.0程序集。要为.NET 4.0项目生成此报表,必须使用配置文件强制specflow.exe使用.NET 4.0运行时。只需复制下面的配置并创建一个specflow.exe.config文件,并将其放在specflow.exe旁边,您就可以创建步骤定义报告了。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
        <supportedRuntime version="v4.0.30319" /> 
    </startup> 
</configuration> 
票数 30
EN

Stack Overflow用户

发布于 2013-01-10 22:28:10

我尝试使用上面建议的配置文件解决方案。它适用于本地测试,但当我将代码推到我们的CI环境中时,它就窒息了,因为CI环境没有那个配置文件。我们将CI环境限制为只使用各种包的干净版本,因此我们不想尝试将特殊配置注入CI服务器。

我们注意到,在没有特殊配置文件的情况下,SpecFlow可以很好地处理我们的几个.NET 4.0项目。经过一些研究,实际的“问题”似乎是NuGet 2.1。对于使用.NET 1.7的NuGet 4.0项目,一切都很好。

在1.7-2.1之间的某个地方,NuGet在NuGet.targets文件中引入了新特性,这些特性不受旧版本的MSBuild的支持。具体来说,问题似乎是元素<UsingTask>下面的<UsingTask>,正如错误消息所解释的那样。

粗略地浏览一下目标文件,就会发现该部分负责保持NuGet的最新信息。删除本节完全以上面添加配置文件的方式解决了这个问题,尽管也删除了似乎提供的自更新功能。考虑到.targets文件已提交到存储库,此解决方案也适用于我们的CI环境,而不需要在CI方面进行任何更改。

这不一定是一个比ngm更好的解决方案,它只是一个不同的解决方案。取决于您的环境,这可能是一种更好的方法,也可能不是。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11363202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档