visual-studio - VSTS 代码覆盖错误?

标签 visual-studio unit-testing code-coverage

有没有人经历过this VSTS Code Coverage "bug? "你有什么建议吗?

我正在使用 Visual Studio 进行代码覆盖率分析,现在使用随附的工具这通常是一项简单的任务。但是,我有一个我无法克服的问题。假设我有程序集 A、B、C 和 D,并已将它们全部标记为进行覆盖率分析。我运行测试并查看结果并找到包含 A、B 和 C 但不包含 D 的报告。我调查并发现没有测试实际执行 D 中的任何代码(假设它是 asp.net 前端和我还没有利用 UI 测试)。因为没有针对 D 的测试导致报告中缺少 D,所以总代码覆盖率和“未覆盖的 block ”是不正确的。

有谁知道我可以如何执行以下任一操作?

  • 计算 D 中的总“ block 数”,以便我可以手动调整覆盖率报告以使其正确?
  • 获取覆盖率报告以自动显示未覆盖的程序集的 block 数,这些程序集已检测覆盖率但根本未经过测试?

虽然我确实希望提高测试覆盖率,但我正在分析在代码库中的历史时间点保存的覆盖率报告。因此,我不想创建一个只在每个程序集中执行至少 1 个代码块的测试,并不想通过运行测试来重新计算测试覆盖率。对于看似简单的问题,这将是一个非常耗时的解决方法。

最佳答案

我遇到过一次,很烦人。在我的例子中,有许多 dll 没有被覆盖,所以我最终通过使用被覆盖的 dll 信息除以它们的大小来估计我们代码库的 block /kb。然后当然要获得未覆盖的 dll 的 block 数,您只需将平均值乘以 dll 的大小即可。这不是最准确的方法,但它可以让您快速了解,并且您可以通过计算已知的 dll 并与实际值进行比较来确定错误。如果您有大量已计算的程序集,这将很有帮助。

当然,您可以只进行 LOC 计数(忽略注释)并计算大致相当于一个 block 的单个 LOC。如果我没记错的话,相当准确,所以应该让你更接近。

我知道强制报告未覆盖程序集的唯一方法是实际编写加载程序集的测试(测试甚至不需要执行任何操作)。

关于visual-studio - VSTS 代码覆盖错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/123619/

相关文章:

azure - 为我的项目创建 azure sql 数据库依赖项时遇到问题

unit-testing - Grails:在另一个服务中模拟一个服务及其方法

javascript - 如何修复 Jasmine 中的 'TypeError: Cannot redefine property: origin'

java - EasyMock:如何测试这个方法

javascript - 我应该使用什么 JavaScript 解析器在 JavaScript 中为 Node 重新实现 jsCoverage?

angular - Angular Istanbul 尔代码覆盖率报告中的导入未采用 if-else 路径

c# - 组件 dll 加载失败

c++ - 链接 : fatal error LNK1104: cannot open file 'libcollada14dom21.lib'

.net - 什么是 COMPLUS_ZapDisable?为什么默认情况下没有设置它?

jenkins - 是否可以在 Jenkins 仪表板上显示 Jacoco 覆盖率报告?