我有一个由几个项目组成的Visual Studio解决方案。我在TeamCity中为它设置了一个构建过程,并添加了一个NUnit runner构建步骤,设置如下:
- nunit runner 2.6.3
- 从以下位置运行测试:%teamcity.build.workingDir%\Sources\**\bin\*.Web.UnitTests.dll
- .net覆盖工具:JetBrains dotCover
- 筛选器:--空--
在构建的代码覆盖率选项卡中,在覆盖率细分下,我只能看到:
- MyProject.Domain
- 我的项目Web单元测试
解决方案中的MyProject.Web、测试对象和其他一些程序集不会显示在那里,并且被dotCover代码覆盖率计算忽略。为什么?如何告诉它要使用哪些程序集?
我在"过滤器"字段中尝试了各种+:/-:组合,但都没有成功。但是过滤器是空的,我希望MyProject.Web会被包括在内,因为MyProject.Domain是-为什么不包括它?
您是在发布模式还是调试模式下构建?我在发布模式上也遇到了同样的问题,必须启用PDB输出,这是dotCover确定代码覆盖率所需要的。默认情况下,发布版本不启用PDB。
若要启用它,请转到"项目设置"->生成->高级(底部的按钮)->调试信息->选择";仅pdb";或";"满";。
此外,当无法确定代码覆盖率时,dotCover会提供此语句。检查列出的所有原因可能会有所帮助:
未检测到可执行代码。
问题可能由以下原因之一引起:
- 包含/排除模式不正确
- 汇编程序集时没有调试信息
- .pdb文件不可用
- 已为MSTest启用Visual Studio代码覆盖率
- .testrunconfig用于MSTest,并且Visual Studio代码覆盖率未被禁用(存在enable="true"的CodeCoverage部分)
如果没有日志文件和快照,恐怕很难提供正确的答案。请提交申请并附上文件:http://dotnettools-support.jetbrains.com/anonymous_requests/new
如果日志尚未启用,请将相应的参数添加到构建配置中以激活它们:https://confluence.jetbrains.com/display/TCD9/Reporting+问题#报告问题dotCoverIssues