1

当我从 TeamCity 中的 MSTest 构建步骤调用 dotCover 时,什么被认为是 100%?是 100% 的所有编译代码吗?它是测试所涉及的所有程序集的所有代码吗?是测试所涉及的所有课程吗?

当我从运行 My.Tests.dll 的 TeamCity MSTest 构建步骤调用 dotCover 时,正在跟踪哪些代码行?

4

2 回答 2

2

dotCover 仅提供语句级覆盖率报告,而其他工具(如 NCover)也包括函数和分支覆盖率。

通过 TeamCity MSTest 构建步骤,您可以在“过滤器”字段中指定您希望报告覆盖范围的程序集。这允许您仅指定.Tests模式的排除项或仅包含一个程序集。有关更多详细信息,请参阅 TeamCity 文档:http: //confluence.jetbrains.net/display/TCD7/JetBrains+dotCover

我相信,如果您不指定任何过滤器,则包含加载到 CLR 中的所有程序集中的所有代码(您必须从您调用的代码中加载程序集,因此可能不包含某些程序集,这只是CLR 的延迟加载)。这是因为 dotCover 之类的工具使用 CLR 分析 API,并且不会预先检测您的代码。请注意,dotCover 将从 GAC 中排除程序集。

于 2012-11-16T08:52:40.513 回答
0

不确定我是否完全理解您的问题,但无论如何都会试一试。据我了解,100% 的覆盖率意味着项目中的每一行代码都由您的测试用例执行。基本上,这意味着您已确保控制流经项目中的每一行代码。

一般来说,我从未见过 100% 的覆盖率,因为很难测试每个代码路径。例如,考虑由您的代码处理的不同类型的异常,您如何通过某些测试用例对每个异常执行 catch 块?您需要以某种方式模拟异常,这并不总是那么容易。

于 2012-11-16T08:25:24.097 回答