VSTS代码覆盖率错误?
时间:2020-03-06 14:37:29 来源:igfitidea点击:
有没有人经历过VSTS代码覆盖率的"错误"?你有什么建议吗?
我正在使用Visual Studio进行代码覆盖率分析,现在使用附带的工具通常可以轻松完成这一任务。但是,我有一个无法解决的问题。假设我有程序集A,B,C和D,并标记了它们全部用于覆盖率分析。我运行测试并查看结果,并找到包含A,B和C但不包含D的报告。我调查并发现,实际上没有测试在D中执行任何代码(假设这是asp.net前端,而我尚不使用UI测试)。因为没有针对D的测试导致D从报告中丢失,所以总代码覆盖率和"未覆盖的块"是不正确的。
有谁知道我该怎么做以下之一?
- 计算D中的总"块数",以便我可以手动将覆盖率报告调整为正确的?
- 获取"覆盖率"报告以自动显示已检测覆盖但未经过测试的部件未覆盖的块数?
虽然我确实希望提高测试覆盖率,但是我正在分析在历史时间点保存在代码库中的覆盖率报告。因此,我不想创建一个仅在每个程序集中至少执行1个代码块的测试,然后通过运行测试来重新计算测试覆盖率。这似乎是一个简单的问题,这将是一个非常耗时的解决方法。
解决方案
我曾经碰到过一次,这很烦人。在我的情况下,有许多未覆盖的dll,因此我最终通过使用覆盖的dll信息除以其大小来估算代码库的块/ kb。然后,当然要获取未发现的dll的块数,只需将平均值乘以dll的大小即可。这不是最准确的方法,但是它可以使我们快速了解问题,并且可以通过计算已知的dll并与实际值进行比较来确定错误。如果我们要计算的装配数量很多,这将很有帮助。
当然,我们可以只进行LOC计数(忽略注释)并在单个LOC上大致相当于一个块。如果我没记错的话,那是相当准确的,所以应该使我们更加接近。
我知道对未发现的程序集强制生成报告的唯一方法是实际编写一个加载程序集的测试(该测试甚至不需要执行任何操作)。