coverlet.collector 6.0.2
前缀已保留
dotnet add package coverlet.collector --version 6.0.2
NuGet\Install-Package coverlet.collector -Version 6.0.2
<PackageReference Include="coverlet.collector" Version="6.0.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add coverlet.collector --version 6.0.2
#r "nuget: coverlet.collector, 6.0.2"
// Install coverlet.collector as a Cake Addin #addin nuget:?package=coverlet.collector&version=6.0.2 // Install coverlet.collector as a Cake Tool #tool nuget:?package=coverlet.collector&version=6.0.2
Coverlet与VSTest(即Visual Studio测试平台)的集成
支持的运行时版本:
自版本6.0.0
起
- .NET Core >= 6.0
- .NET Framework >= 4.6.2
如快速入门部分所述,要使用收集器,您需要运行SDK v6.0.100(LTS)或更高版本,并且您的项目文件必须引用coverlet.collector
和一个最低版本的Microsoft.NET.Test.Sdk
。
一个示例项目文件如下所示
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net48</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
...
</ItemGroup>
...
</Project>
在xunit模板测试(dotnet new xunit
)中默认包含对coverlet.collector
包的引用,您只需像更新其他任何包引用一样更新包。
在设置正确的引用后,您可以通过默认的dotnet test CLI动词运行覆盖率
dotnet test --collect:"XPlat Code Coverage"
或者
dotnet publish
...
... -> C:\project\bin\Debug\netcoreapp3.0\testdll.dll
... -> C:\project\bin\Debug\netcoreapp3.0\publish\
...
dotnet vstest C:\project\bin\Debug\netcoreapp3.0\publish\testdll.dll --collect:"XPlat Code Coverage"
正如您在vstest
动词的情况下所见,您必须先发布项目。
测试结束,您可以在默认的 VSTest 平台目录 TestResults
下找到覆盖率文件数据。
Attachments:
C:\git\coverlet\Documentation\Examples\VSTest\HelloWorld\XUnitTestProject1\TestResults\bc5e983b-d7a8-4f17-8c0a-8a8831a4a891\coverage.cobertura.xml
Test Run Successful.
Total tests: 1
Passed: 1
Total time: 2,5451 Seconds
您可以使用标准的 dotnet test
开关 --results-directory
更改输出目录。
注意:设计上,VSTest 平台将在一个随机命名的文件夹(GUID 字符串)下创建您的文件,因此如果您需要将其加载到某些不支持 glob 模式或层次性搜索的图形用户界面报告系统(例如 coveralls、codecov、reportgenerator 等)中,则需要手动将结果文件移动到一个可预测的文件夹。
Coverlet 支持的 VSTest 集成选项
⚠️当前 VSTest 集成不支持 msbuild 和 .NET 工具的所有功能,例如在控制台显示结果、报告合并和阈值验证。我们正在努力填平这些差距。
PS:如果您没有其他合并报告的方法(例如,您的报告生成器不支持多覆盖率文件),您目前可以利用我们的一位贡献者 Daniel Paz(@p4p3) 报告的一个技巧 https://github.com/tonerdo/coverlet/pull/225#issuecomment-573896446
默认选项(如果没有指定 runsettings 文件)
如果没有指定 runsettings 文件而只通过收集器名称调用 coverlet,生成覆盖率输出的结果默认为 cobertura 格式。
dotnet test --collect:"XPlat Code Coverage"
Coverage 报告的输出格式也可以不通过 runsettings 文件指定,通过在参数中指定来更改。支持的格式包括 lcov、opencover、cobertura、teamcity、json(默认为 coverlet 自有格式)。
dotnet test --collect:"XPlat Code Coverage;Format=json"
甚至还可以指定多个输出格式。
dotnet test --collect:"XPlat Code Coverage;Format=json,lcov,cobertura"
高级选项(通过 runsettings 支持)
以下是一些 coverlet 支持的选项,您可以在 runsettings 中将其指定为数据收集器配置。
选项 | 摘要 |
---|---|
格式 | 覆盖率输出格式。这些格式可以是 cobertura、json、lcov、opencover 或 teamcity,也可以是这些格式的组合。 |
排除 | 使用过滤器表达式排除代码覆盖率分析。 |
excludeByAttribute | 排除由属性装饰的整个方法、类或程序集的代码覆盖率。 |
excludeByFile | 从代码覆盖中忽略特定的源文件。 |
include | 使用过滤器表达式显式设置哪些要包含在代码覆盖率分析中。 |
includeDirectory | 显式设置哪些目录要包含在代码覆盖率分析中。 |
SingleHit | 指定是否将代码覆盖率命中报告限制为每个位置的单一命中。 |
useSourceLink | 指定是否使用 SourceLink URI 而不是文件系统路径。 |
includeTestAssembly | 包括测试程序集的覆盖率。 |
SkipAutoProps | 不跟踪也不记录自动实现属性。 |
DoesNotReturnAttribute | 标记有这些属性的方法是已知不返回的,其后的语句将被排除在覆盖率之外。 |
DeterministicReport | 在确定性构建的上下文中生成确定性报告。请参阅文档获取更多信息。 |
excludeAssembliesWithoutSources | 指定是否排除没有源文件的程序集。选项可以是 MissingAll、MissingAny 或 None。默认是 MissingAll。 |
如何通过 runsettings 指定这些选项?
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<Format>json,cobertura,lcov,teamcity,opencover</Format>
<Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*</Exclude>
<Include>[coverlet.*]*,[*]Coverlet.Core*</Include>
<ExcludeByAttribute>Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute>
<ExcludeByFile>**/dir1/class1.cs,**/dir2/*.cs,**/dir3/**/*.cs,</ExcludeByFile>
<IncludeDirectory>../dir1/,../dir2/,</IncludeDirectory>
<SingleHit>false</SingleHit>
<UseSourceLink>true</UseSourceLink>
<IncludeTestAssembly>true</IncludeTestAssembly>
<SkipAutoProps>true</SkipAutoProps>
<DeterministicReport>false</DeterministicReport>
<ExcludeAssembliesWithoutSources>MissingAll,MissingAny,None</ExcludeAssembliesWithoutSources>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
过滤细节见 msbuild 指南。
可以通过以下命令行选项轻松提供该 runsettings 文件:
dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings
dotnet vstest C:\project\bin\Debug\netcoreapp3.0\publish\testdll.dll --collect:"XPlat Code Coverage" --settings coverlet.runsettings
请参阅我们的 HelloWorld
示例。
通过命令行传递 runsettings 参数
您可以通过使用命令行中的 xml 平面语法来避免向 dotnet test
驱动程序传递 runsettings
文件。
例如,如果您想将 Format
元素设置为 runsettings 选项,可以使用此语法:
dotnet test --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=json,cobertura,lcov,teamcity,opencover
有关更多信息,请参阅此处:https://github.com/microsoft/vstest/blob/main/docs/RunSettingsArguments.md
工作原理
借助数据收集器实现 Coverlet 集成。当我们指定 --collect:"XPlat Code Coverage"
时,VSTest 平台会尝试从 coverlet.collector.dll
中加载 coverlet 收集器
进程外数据收集器:进程外收集器在运行测试的进程之外的进程(datacollector.exe/datacollector.dll)中运行。此数据收集器负责调用 Coverlet API 对 .dll 进行插桩,收集覆盖率结果并将覆盖率输出文件发送回测试平台。
进程内数据收集器:进程内收集器在执行测试的 testhost 进程中加载。此收集器需要删除对进程退出处理器的依赖,以刷新命中文件,避免出现这个严重已知问题
常见问题
有关已知问题的完整列表,请查看详细文档KnownIssues.md
产品 | 版本 兼容和额外计算的目标框架版本。 |
---|---|
.NET | net5.0 被计算。 net5.0-windows 被计算。 net6.0 被计算。 net6.0-android 被计算。 net6.0-ios 被计算。 net6.0-maccatalyst 被计算。 net6.0-macos 被计算。 net6.0-tvos 被计算。 net6.0-windows 被计算。 net7.0 被计算。 net7.0-android 被计算。 net7.0-ios 被计算。 net7.0-maccatalyst 被计算。 net7.0-macos 被计算。 net7.0-tvos 被计算。 net7.0-windows 被计算。 net8.0 被计算。 net8.0-android 被计算。 net8.0-browser 被计算。 net8.0-ios 被计算。 net8.0-maccatalyst 被计算。 net8.0-macos 被计算。 net8.0-tvos 被计算。 net8.0-windows 被计算。 |
.NET Core | netcoreapp2.0 计算得出 netcoreapp2.1 计算得出 netcoreapp2.2 计算得出 netcoreapp3.0 计算得出 netcoreapp3.1 计算得出 |
.NET Standard | netstandard2.0 兼容 netstandard2.1 计算得出 |
.NET Framework | net461 计算得出 net462 计算得出 net463 计算得出 net47 计算得出 net471 计算得出 net472 计算得出 net48 计算得出 net481 计算得出 |
MonoAndroid | monoandroid 计算得出 |
MonoMac | monomac 计算得出 |
MonoTouch | monotouch 计算得出 |
Tizen | tizen40 计算得出 tizen60 计算得出 |
Xamarin.iOS | xamarinios 计算得出 |
Xamarin.Mac | xamarinmac 计算得出 |
Xamarin.TVOS | xamarintvos 计算得出 |
Xamarin.WatchOS | xamarinwatchos 计算得出 |
此包没有依赖项。
NuGet 包 (38)
显示借助于 coverlet.collector 依赖的前 5 个 NuGet 包
包 | 下载 |
---|---|
Rocket.Surgery.Extensions.Testing.Coverlet
包描述 |
|
Kasp.Test
一些快速开发后端工具。 |
|
Uno.Extensions.Reactive.Testing 扩展程序,可加速使用 Uno Platform、UWP 和 WinUI 的应用程序开发 |
|
EBK.Core.BuildingBlocks
包描述 |
|
Coffee.NetCore
包描述 |
GitHub 仓库 (1.5K)
显示依赖 coverlet.collector 的前 5 个最受欢迎的 GitHub 仓库
仓库 | 星数 |
---|---|
microsoft/PowerToys
提升 Windows 系统生产力的实用工具
|
|
shadowsocks/shadowsocks-windows
Shadowsocks 的 C# 版本
|
|
jellyfin/jellyfin
免费软件媒体系统
|
|
NickeManarin/ScreenToGif
🎬 ScreenToGif 允许您录制屏幕的选定区域,编辑并保存为 gif 或视频。
|
|
dotnet/maui
.NET MAUI 是 .NET 多平台应用程序 UI,一个用于构建跨移动、平板和桌面本机应用程序的框架。
|
版本 | 下载 | 最后更新 |
---|---|---|
6.0.2 | 17,558,565 | 3/13/2024 |
6.0.1 | 3,942,074 | 2/20/2024 |
6.0.0 | 48,524,205 | 5/21/2023 |
3.2.0 | 56,863,771 | 10/29/2022 |
3.1.2 | 93,752,410 | 2/6/2022 |
3.1.1 | 1,294,205 | 1/30/2022 |
3.1.0 | 50,856,978 | 7/19/2021 |
3.0.3 | 16,488,242 | 2/21/2021 |
3.0.2 | 24,309,571 | 1/24/2021 |
3.0.1 | 1,029,178 | 1/16/2021 |
3.0.0 | 678,978 | 1/9/2021 |
1.3.0 | 42,889,997 | 5/30/2020 |
1.2.1 | 6,089,565 | 4/2/2020 |
1.2.0 | 42,056,161 | 1/3/2020 |
1.1.0 | 2,541,775 | 9/22/2019 |
1.0.1 | 20,406,795 | 7/1/2019 |
1.0.0 | 554,180 | 6/6/2019 |