December 28th, 2023

这次我们的代码覆盖工具带来了哪些新功能?

Mia Wu
Partner Technical Advisor

本篇翻译于Jakub Chocholowicz的What’s New in Our Code Coverage Tooling?  

我们带来了一个让开发者非常兴奋的消息!我们更新了代码覆盖工具 Microsoft.CodeCoverage dotnet-coverage带来了一些出色的功能。如果您不熟悉我们的工具,请查看入门指南。让我们深入了解这些将简化编码体验的改动 

支持所有平台 

由于添加了静态检测,我们的工具可以在任何.NET支持的平台上运行。了解有关静态和动态检测的更多信息,并探索其他支持的平台 

新的报告格式 

我们改进了代码覆盖率报告格式,以便代码覆盖工具与 ReportGenerator 等其他工具可以顺利集成。 虽然默认值仍然是熟悉的 .coverage 格式,但我们引入了一些新格式: 

  • Binary(默认).coverage(Microsoft 的特殊格式)– 您可以在 Visual Studio Enterprise 中打开这种格式的文件例子 
  • Cobertura:.cobertura.xml(开源 XML 格式) – 您可以在 Visual Studio Enterprise以及任何文本编辑器中打开这种格式的文件也可以使用 ReportGenerator 生成 HTML 报告。 例子 
  • XML:.xml(Microsoft XML 格式)– 您可以在 Visual Studio Enterprise 或任何文本编辑器中打开这种格式的文件例子 

dotnet-coverage 

隆重推出我们的新工具 dotnet-coverage!它执行以下任务: 

  • 收集控制台应用程序的代码覆盖率。例子 
  • 收集 Web 应用程序的代码覆盖率。例子 
  • 合并覆盖率报告。例子 
  • 检测二进制文件。例子 
  • 单独计算每个测试的代码覆盖率。例子 

请访问dotnet-coverage文档以了解更多信息。 

自动合并解决方案 

现在,在解决方案层级运行dotnet test –collect “Code Coverage”会自动合并所有测试项目的代码覆盖率。请访问解决方案的场景 24 代码覆盖率以查看完整示例。 

改进的文档 

您可以浏览我们位于microsoft/codecoverage的最新 GitHub 存储库,获取您需要的所有信息示例 

更好的性能 

16.5 版本之前,收集代码覆盖率报告会显著减慢测试的执行速度。现在我们解决了这个问题,性能提升了 80%。有关详细结果和日志,请参阅性能部分的文档 

  时间  比率 
Microsoft.CodeCoverage 16.5  03:52:53  1.00 
Microsoft.CodeCoverage 17.0  02:25:49  0.63 
Microsoft.CodeCoverage 17.5  01:27:52  0.38 
Microsoft.CodeCoverage 17.9  00:50:00  0.21 

您需要做什么 

请确保在您的测试项目中使用我们最新的稳定包来尝试使用最新功能并加速项目的构建 

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Microsoft.CodeCoverage" Version="17.8.0" />

如果您的解决方案没有任何 C++ 代码,请在运行设置中使用以下标志关闭本机代码覆盖,使其更快、更可靠 

<EnableStaticNativeInstrumentation>False</EnableStaticNativeInstrumentation>
<EnableDynamicNativeInstrumentation>False</EnableDynamicNativeInstrumentation>

您可以访问配置文档以查看其他选项和我们设置的完整示例 

特别感谢 

非常感谢Faisal HafeezMarco RossignoliMariam AbdullahCodrin-Victor PoienaruPavel Horak对这个项目的杰出贡献!🙌🚀 

如果大家有任何的技术问题,欢迎到我们的官方的.NET中文论坛 提问。

Author

Mia Wu
Partner Technical Advisor

0 comments