我们有许多项目通过TeamCity构建和运行测试。对于这些项目,代码覆盖率使用dotCover计算。
在某些情况下,它会对行进行两次计算,因此只显示一半的覆盖率。
我们最简单的例子是一个带有一个类的命名空间。这个类只是一个包含6个常量的列表。所以它有6个公共静态属性。
当我们查看代码时,它会以绿色显示所有6行。
但是在统计数据中它报告了12行,因为只有(所有)6个被测试,覆盖率为50%。
我们在项目中的所有项目或所有DLL上都没有此问题,我无法识别任何模式。
有谁知道可能导致此问题的原因?
答案 0 :(得分:1)
我刚刚遇到了这个问题(teamcity 7.1.5,内置dotcover,msunit测试框架)。
我的原因是我在一个构建步骤中测试了多个程序集。 Assembly1和Assembly2都使用了Assembly3,而Assembly3遇到了这个问题 - 如问题中所述,Assembly3只显示了它应该覆盖的一半。
解决方案:制作两个单独的构建步骤,一个用于测试Assembly1,另一个用于测试Assembly2。现在我不再遇到这个问题,最终结果正确;测试仍然运行,代码覆盖率结果准确。