当我从TeamCity中的MSTest构建步骤调用dotCover时,什么构成完整的代码覆盖?

时间:2012-11-16 08:14:09

标签: continuous-integration teamcity qa dotcover

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

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

2 个答案:

答案 0 :(得分:2)

dotCover仅提供语句级别覆盖率的报告,其中NCover等其他工具也包括函数和分支覆盖率。

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

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

答案 1 :(得分:0)

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

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