OpenCover MSBuild 集成 - 未生成任何结果
Posted
技术标签:
【中文标题】OpenCover MSBuild 集成 - 未生成任何结果【英文标题】:OpenCover MSBuild Integration - No results generated 【发布时间】:2011-08-09 16:06:36 【问题描述】:让 OpenCover 在我的机器上运行后,下一步是让它与构建服务器一起使用。
我一直在尝试将 OpenCover 与 Bamboo Build Server 上的 MSBuild 集成。在构建解决方案后,我已将 Build.proj 修改为如下运行 OpenCover:
<Target Name="TestAndCodeCoverage" DependsOnTargets="Build" >
<Message Text="Executing Unit Tests and running OpenCover to check code coverage..." />
<MakeDir Directories="Coverage" />
<Exec Command='"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -target:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" -targetargs:/testcontainer:"TestProject\bin\Release\TestProject.dll" -filter:+[*]* -output:Coverage\CodeCoverageResults.xml -register:user -mergebyhash' />
</Target>
“Coverage”目录在解决方案根目录(构建期间的工作目录)中创建。测试已运行并全部通过,但在构建日志中显示Committing....
之后(将在命令行中显示的内容),没有生成任何结果并且构建继续执行下一个任务(使用 ReportGenerator 创建报告 -这会失败,因为没有创建 CodeCoverageResults.xml)。
在构建机器上的命令行中运行相同的命令时,一切都会按预期运行,并且可以通过 ReportGenerator 生成报告。
其他人有同样的问题吗?我是否需要像this PartCover 示例那样注册等效的 dll?
【问题讨论】:
【参考方案1】:由于构建服务器是一项服务,所以我只会使用 -register 开关,但是如果在构建服务器上,我总是会说您应该使用 regsvr32 注册一次 32 位和 64 位分析器,然后删除 -注册开关,即无需每次都注册和注销分析器。
-register[:user] 开关适用于人们(比如我自己)喜欢在有限权限下工作的场景。
【讨论】:
听起来您将要解决我的问题,但我可以解释一下 -register 标志对我的作用以及为什么我需要它才能使其工作。干杯 分析器是 COM 对象,因此需要注册(在注册表中不少于)。现在您可以让主机(控制台)通过使用 -register 开关(或 -register:user 如果在非管理员帐户下或受 UAC 限制)来执行此操作,或者您可以使用 regsvr32 实用程序;在构建机器上,如果我安装了探查器,我更喜欢后者,并且如果我有多个构建被不同版本的探查器分析,我只会使用 -register 开关。 HTH 知道为什么我没有收到任何结果,尽管探查器已根据 Windows 日志正确注册和加载?这只发生在竹子中运行(设置为在本地系统帐户下的 Tomcat 6 中运行)时,使用命令行在同一构建目录中运行的测试成功交付结果。 PDB 通常是问题所在(您是否在“发布”版本中生成它们?未分析程序集/类/方法的原因记录在 XML 输出中。以上是关于OpenCover MSBuild 集成 - 未生成任何结果的主要内容,如果未能解决你的问题,请参考以下文章