作者:Jakub Chocholowicz - Principal Software Engineer, .NET
排版:Alan Wang
我们带来了一个让开发者非常兴奋的消息!我们更新了代码覆盖工具
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 Hafeez
、
Marco Rossignoli
、
Mariam Abdullah
、
Codrin-Victor Poienaru
和
Pavel Horak
对这个项目的杰出贡献!????????