【问题标题】:VSTS Code Coverage bug?VSTS 代码覆盖错误?
【发布时间】:2010-09-12 12:34:25
【问题描述】:

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

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

有谁知道我可以如何做以下任何一项?

  • 计算 D 中的总“块数”,以便我可以手动调整覆盖率报告以使其正确?
  • 让 Coverage 报告自动显示未覆盖的块数,这些块已被检测为覆盖但根本没有经过测试?

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

【问题讨论】:

    标签: visual-studio unit-testing code-coverage


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我担心没有像你建议的那样真正的修复,但我预计会是这样。我希望这会在 VS 10 中有所改变。如果我为覆盖率装配一个程序集,我希望它会出现在覆盖率报告中。现在我无法确定我的功能代码库的覆盖范围。
    • 我今天早上刚被这个发现了,我真的希望他们能在 VS 2010 中解决这个问题!当某些程序集根本没有被覆盖时,被告知您有 100% 的代码覆盖率是非常误导的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多