2011-08-09 56 views
4

在让OpenCover在我的机器上工作之后,下一步就是让它与构建服务器一起工作。OpenCover MSBuild集成 - 未生成结果

我一直在尝试在Bamboo Build Server上集成OpenCover和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> 

的“覆盖”目录(它是在构建期间工作目录)。测试运行并全部通过,但在生成日志(将在命令行中显示的内容)中显示Committing....之后,将不会生成任何结果,并且Build将转到下一个任务(使用ReportGenerator创建报告 - 这会失败因为CodeCoverageResults.xml未创建)。

在构建机器上的命令行中运行相同的命令时,所有功能都按预期工作,报告可由ReportGenerator生成。

其他人有过同样的问题吗?我是否需要注册等效dll,例如this PartCover示例?

回答

4

由于构建服务器是一项服务,我只能使用-register开关,但是如果在构建服务器上,我总是会说你应该注册32位和64位分析器一次,使用regsvr32,然后删除注册开关即每次都不需要注册和注销概要分析器。

-register [:user]开关适用于人们(如我)喜欢在有限权限下工作的场景。

+0

注册两个分析器工作 - 再次感谢! – Jack

+0

这听起来像你即将解决我的问题,但我可以做一些解释,什么注册标志为我做,为什么我需要它为此工作。欢呼 –

+1

分析器是COM对象,因此他们需要注册(不少于注册表)。现在,您可以让主机(控制台)通过使用-register开关(或者如果在非管理员帐户下或受到UAC限制的情况下为-register:user)来执行此操作,或者您可以使用regsvr32实用程序;在构建机器上,如果我安装了探查器,我更喜欢后者,如果我有多个由不同版本的探查器进行概要分析的构建,则只使用-register开关。 HTH –