2

我有一个由多个项目组成的 Visual Studio 解决方案。我在 TeamCity 中为它设置了一个构建过程,并添加了一个 NUnit 运行器构建步骤,具有以下设置:

  • nunit亚军2.6.3
  • 从以下位置运行测试:%teamcity.build.workingDir%\Sources\**\bin\*.Web.UnitTests.dll
  • .net 覆盖工具:JetBrains dotCover
  • 过滤器:--空--

在构建的代码覆盖率选项卡中,在覆盖率细分下,我只能看到:

  • 我的项目.域
  • MyProject.Web.UnitTests

MyProject.Web、测试对象和解决方案中的一些其他程序集不会显示在那里,并且会被 dotCover 代码覆盖率计算忽略。为什么?我如何告诉它使用哪些程序集?

我在“过滤器”字段中尝试了各种 +: / -: 组合,但均未成功。但是过滤器为空,我希望 MyProject.Web 被包括在内,因为 MyProject.Domain 是 - 为什么不包括在内?

4

2 回答 2

1

您是在发布模式还是调试模式下构建?我在发布模式下遇到了同样的问题,并且必须启用 PDB 输出,这是 dotCover 确定代码覆盖率所需的。默认情况下,发布版本未启用 PDB。

要启用它,请转到项目设置 -> 构建 -> 高级(底部的按钮)-> 调试信息 -> 选择“pdb-only”或“完整”。

此外,当无法确定代码覆盖率时,dotCover 会提供此语句。检查列出的所有原因可能会有所帮助:

未检测到可执行代码。

该问题可能由以下原因之一引起:

  • 包含/排除模式不正确
  • 程序集在没有调试信息的情况下编译
  • .pdb 文件不可用
  • 为 MSTest 启用了 Visual Studio 代码覆盖率
  • .testrunco​​nfig 用于 MSTest 并且未禁用 Visual Studio 代码覆盖率(存在具有 enable="true" 的 CodeCoverage 部分)
于 2015-02-23T19:56:59.000 回答
0

如果没有日志文件和您的快照,恐怕很难提供正确的答案。请提交请求并附上文件:http ://dotnettools-support.jetbrains.com/anonymous_requests/new

如果日志尚未启用,请将相应参数添加到构建配置以激活它们:https ://confluence.jetbrains.com/display/TCD9/Reporting+Issues#ReportingIssues-dotCoverIssues

于 2015-02-23T13:22:57.667 回答