.NET 中代码覆盖率的观察者效应

问题描述 投票:0回答:1

我正在尝试为 Sentry .NET SDK 实现代码覆盖率。

  • 由于这是一个开源存储库,我需要选择一个免费提供的代码覆盖率工具,以便任何人都可以构建解决方案而无需获得产品许可。
  • 由于我们的目标是多个平台,因此我们必须能够在 Mac、Linux 和 Windows 上构建它......因此我们不能使用作为 Visual Studio 扩展提供的解决方案

可能的解决方案似乎是:

我尝试了 microsoft.codecoverage 和 altcover,但这两个工具都会改变单元测试的结果。具体来说,使用这些代码覆盖工具中的任何一个进行检测都会改变 Sentry 收集的调试堆栈跟踪(这会导致我们的验证测试失败)。当使用 microsoft.codecoverage 或 altcover 运行测试时 DebugImages 中的 CodeId 不同

Coverlet 是唯一不受这种观察者效应影响的。然而,我们发现使用 Coverlet 时我们的 CI 构建会定期失败(例如此处),在计算覆盖率结果时会出现类似

Unable to read beyond the end of the stream.
的错误。

.NET 是否还有其他代码覆盖率选项,或者是否有人能够使用现有的覆盖率工具成功克服上述问题?

.net code-coverage coverlet
1个回答
0
投票

我没有找到观察者对 microsoft/altcover 库的影响的解决方案,但使用

coverlet.collector
而不是
coverlet.msbuild
似乎可以解决 Coverlet 的困难(根据有关此 已知问题的文档)并且这也不会引入任何其自身的观察者效应......所以似乎是最好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.