3

已解决:查看此问题的底部以了解工作配置


我正在尝试设置 NCover 以在我的 FinalBuilder 项目中使用,用于 .NET 4.0 C# 项目,但我的最终覆盖输出文件不包含覆盖数据。

我在用:

所有工具都是今天最新的官方。

我终于设法哄骗 FB 在 NCover 下为 .NET 4.0 项目运行我的单元测试,所以我得到了Tests run: 184, ...,这是正确的。

但是,NCover 的最终Coverage.xml文件输出几乎是空的,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!-- saved from NCover 3.0 Export url='http://www.ncover.com/' -->
<coverage profilerVersion="3.3.2.6211" driverVersion="3.3.2" exportversion="3" viewdisplayname="" startTime="2010-04-22T08:55:33.7471316Z" measureTime="2010-04-22T08:55:35.3462915Z" projectName="" buildid="27c78ffa-c636-4002-a901-3211a0850b99" coveragenodeid="0" failed="false" satisfactorybranchthreshold="95" satisfactorycoveragethreshold="95" satisfactorycyclomaticcomplexitythreshold="20" satisfactoryfunctionthreshold="80" satisfactoryunvisitedsequencepoints="10" uiviewtype="TreeView" viewguid="C:\Dev\VS.NET\LVK.IoC\LVK.IoC.Tests\bin\Debug\Coverage.xml" viewfilterstyle="None" viewreportstyle="SequencePointCoveragePercentage" viewsortstyle="Name">
  <rebasedpaths />
  <filters />
  <documents>
    <doc id="0" excluded="false" url="None" cs="" csa="00000000-0000-0000-0000-000000000000" om="0" nid="0" />
  </documents>
</coverage>

FB 日志中的输出为:

...
***************** End Program Output *****************

Execution Time: 1,5992 s

Coverage Xml: C:\Dev\VS.NET\LVK.IoC\LVK.IoC.Tests\bin\Debug\Coverage.xml
NCover Success

我对 NCover 的 FB 步骤的配置:

  • N覆盖什么?: NUnit 测试覆盖率
  • 命令C:\Program Files (x86)\NUnit 2.5.4\bin\net-2.0\nunit-console.exe
  • 命令参数LVK.IoC.Tests.dll /noshadow /framework:4.0.30319 /process=single /nothread
    • 注意:我尝试过使用和不使用/processand/nothread选项
  • 工作目录%FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug
  • 要配置文件的程序集列表%FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug\LVK.IoC.dll
    • 注意:我试过只列出程序集的名称,包括扩展名和不带扩展名。

FB 步骤的文档没有帮助,因为它只列出了每个属性的小句子,并且没有给出示例或故障排除提示。

由于我想将覆盖结果拉入 NDepend 以运行构建时分析,因此我希望该文件包含我需要的信息。

我也在使用TestDriven,如果我右键单击解决方案文件并选择“使用 NCover 测试”,NCover-explorer 会打开覆盖数据,如果我要求它显示包含覆盖文件的文件夹,则有一个.xml 文件具有与上述相同的结构,只是包含所有应该存在的数据,所以我拥有的工具当然能够生成它。

有人知道我在这里配置错误吗?


已解决:以下配置终于对我有用。它在构建的开始结果页面上生成代码覆盖率基本统计信息,并带有指向包含所有内容的详细报告的链接。

由于我将我的单元测试项目命名为与它测试的项目相同,只是带有 .Tests 后缀,因此我已将这些项目排除在代码覆盖范围之外。此外,我必须只包含我自己的程序集(全部以 LVK 开头。)否则我会得到一些由 TeamCity 运行程序加载的程序集,这会稍微影响我的覆盖率统计。

首先,我安装了最新的工具(截至本次编辑):

  • NCover 3.4.8
  • 团队城市 5.1.2
  • NUnit 2.5.5

TeamCity 中构建屏幕上的配置如下:

  • 目标:重建
  • 配置:调试
  • 平台:任何 CPU
  • .NET 覆盖工具:NCover (3.x)
  • .NET 运行时:.NET Framework 4.0,版本:本机
  • NCover 3 的路径:%system.ncover.v3.x64.path%(这是 Windows 2008 Server R2 64 位)
  • 其他 NCover 参数:

    //ias LVK.*
    //eas .*Tests
    //eas LVK\.CodeQuality
    //ea LVK\.CodeQuality\.IgnoreCodeCoverageAttribute
    
  • 其他 NCover 报告参数:

    //or FullCoverageReport:Html:{teamcity.report.path}
    
  • NUnit 跑步者:NUnit 2.5.5

  • .NET 运行时平台:自动 (MSIL),版本:4.0
  • 从以下位置运行测试:**\bin\Debug*Tests.dll
4

2 回答 2

1

据我所知,NCover 无法涵盖 .NET 4.0 的测试。他们宣布了 .NET 4.0 的新版本,但还没有。

在此处查找有关该主题的信息。就我个人而言,我对这项任务没有经验......

更新:他们发布了支持 .NET 4.0 的 NCover 3.4。也许你试一试。

于 2010-04-22T19:43:42.490 回答
0

我从这个线程中找到了你的答案:NUnit is not running Visual Studio 2010 code

在 nunit-console-x86.exe.config 文件中,<configuration>添加:

<startup>
  <requiredRuntime version="v4.0.30319" />
</startup>

<runtime>添加下

<loadFromRemoteSources enabled="true" />

为我修好了。我使用的是 TeamCity 而不是 FinalBuilder。

我也在使用 NCover 3.4。

于 2010-04-28T08:20:00.010 回答