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

Continuous integration 当我从TeamCity中的MSTest构建步骤调用dotCover时,什么构成了完整的代码覆盖率?,continuous-integration,teamcity,qa,dotcover,Continuous Integration,Teamcity,Qa,Dotcover,当我从TeamCity中的MSTest构建步骤调用dotCover时,什么是100%考虑的?所有编译的代码都是100%吗?测试涉及的所有程序集都是代码吗?是不是测试涉及的所有类 当我从运行My.Tests.dll的TeamCity MSTest构建步骤调用dotCover时,哪些行是正在跟踪的代码?不确定我是否完全理解您的问题,但无论如何都会尝试一下。 据我所知,100%覆盖率意味着项目中的每一行代码都由测试用例执行。基本上,这意味着您已经确保控制流通过项目中的每一行代码 一般来说,我从未见过1

当我从TeamCity中的MSTest构建步骤调用dotCover时,什么是100%考虑的?所有编译的代码都是100%吗?测试涉及的所有程序集都是代码吗?是不是测试涉及的所有类


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

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


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

dotCover只提供语句级覆盖率的报告,而像NCover这样的其他工具也包括函数和分支覆盖率

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


我认为,如果不指定任何筛选器,则会包括加载到CLR中的所有程序集中的所有代码(必须从调用的代码中加载程序集,因此可能不包括某些程序集,这只是延迟加载CLR)。这是因为像dotCover这样的工具使用CLR分析API,并且不预先插入代码。请注意,dotCover将从GAC中排除程序集。

我知道这一点,但构成100%的实际代码范围是什么?如果我有x%的覆盖率,x%的什么?x%的代码行总数。假设您有100行代码,然后60%意味着60行代码被覆盖,而40行代码没有被覆盖。我的问题是如何确定我有100行代码。在代码覆盖率可以运行之前,有一个检测阶段,覆盖工具将计算所有代码行,然后存根代码,这样就可以访问每行代码跟踪。然后在报告阶段,代码覆盖率工具将生成关于总共有多少行代码以及覆盖了多少行代码的统计信息。如果您想了解更多有关检测的信息,这里有一些很好的链接,我将尝试进一步尖锐我的问题:当我从运行my.Tests.dll的TeamCity MSTest构建步骤调用dotCover时,跟踪哪些代码行?或者在单元测试中使用该程序集中的代码(在VS中引用是不够的)或者在单元测试中显式地执行
Assembly.Load(“MyAssembly”)