此页面详细介绍了 dotCover 中的最新更新和变化。
这个版本专注于现代、活跃使用的技术,为 dotCover 带来了性能优化和更简化的体验。 为了减少开销并提高覆盖性能,根据当前数据,我们已停止对使用率最低的功能和技术的支持。
Mono 和 Unity 项目不再受支持。 运行时转换到 CoreCLR 后,Unity 支持就会回归。
我们还逐步取消了对旧版或很少使用的应用程序类型的覆盖支持,包括:
这些更改让我们能够将开发开发精力集中在与大多数用户最相关的技术上。
我们对命令行运行程序进行了现代化改造,使其更加连贯并与当前开发工作流保持一致:
cover-dotnet 命令已统一为适用于所有目标类型的单个 dotcover cover 命令。 如果未指定 --targetExecutable,dotCover 将尝试自动检测适当的 dotnet 可执行文件。 dotcover cover @args.txt。 dotcover.exe 运行程序已从 NuGet 软件包中移除。 CLI 运行程序现在仅作为 .NET 全局或局部工具使用(需要 .NET 6 或更高版本)。 我们简化了 dotCover 中的筛选系统,使其专注于最实用和最广泛采用的选项。 为了降低复杂性和维护开销,一些很少使用的筛选器已从 UI 和 CLI 运行程序中移除。
以下筛选器类型不再受支持:
我们重做了持续测试工作流以提高实用性:
此前,每个单元测试会话都可以转换为持续测试会话,这可能会在运行多个会话时导致混乱。
现在,新增了一个独立的持续测试会话。 这一更改使得管理和理解测试工作流更加简单。
dotCover 有一个新图标,用于 ReSharper 和 Rider 中的持续测试。 图标会显示当前测试状态,包括是否有失败的测试。 此外,它还提供了多个快速操作:启用或禁用持续测试、查看覆盖结果、切换代码高亮显示等。
现在,您可以对基于 MAUI 框架的单元测试和应用程序执行覆盖率分析。 目前,dotCover 仅支持 Windows 上以 .NET 7.0+ 为目标的 WinUI 桌面应用程序。 这适用于独立 dotCover 以及 ReSharper 和 Rider 中的 dotCover。
Rider 和 ReSharper 中的 dotCover 获得了改进的代码高亮显示:包括新的背景颜色、用于部分覆盖代码行的新装订区域图标,以及其他细微更改。
dotCover 命令行工具现在作为跨平台框架相关的 .NET 工具提供。
此工具作为 CI/CD 场景的默认解决方案,并取代以前的解决方案。
现在,可以使用快捷键直接触发持续测试。 此前,只能通过构建或保存项目来间接执行此操作。 这项功能在带有 ReSharper 的 Visual Studio 和 JetBrains Rider 中均可使用。
现在,您可以在 ARM64 CPU 版本的 Windows 上使用 dotCover。 这适用于所有版本:独立版 dotCover、Rider 中的 dotCover、Visual Studio 中的 dotCover 和 dotCover 控制台运行器。
您现在可以在 ARM32 CPU 版本的 Linux 上使用 dotCover 控制台运行程序。 支持的框架为 .NET Core 3.1 和 .NET 5.0–7.0。
我们已将 Show Covering Tests(显示覆盖测试)操作添加到代码编辑器和 Unit Test Coverage(单元测试覆盖)窗口中的 dotCover 上下文菜单。 此操作会显示一个弹出窗口,其中所有覆盖测试都在同一位置。 弹出窗口还允许您创建新的覆盖会话。
现在,dotCover 仅复制 Visual Studio 和 JetBrains Rider 中持续测试所需的程序集和符号文件。 这提高了 dotCover 的整体性能,特别是在大型项目中,因为它不再需要复制整个工作目录。 如有必要,您可以在 dotCover 设置中调整卷影复制文件筛选器。
以前,要分析 Unity 测试的覆盖率,您必须重启 Unity 并启用覆盖率支持。 从此版本开始,不再需要重新启动 Unity,并且测试覆盖率开箱即受支持。
您可以使用盾牌图标快速查看已打开文件的覆盖结果。 点击图标将在未覆盖的语句之间导航。
dotCover 命令行运行程序现在支持 Alpine 版本 3.13–3.15。 支持以下 CPU 和框架:
我们正在添加包含逐个测试覆盖率信息的新报告类型:FileCoverageXml、DetailedFileCoverageXml、FileCoverageJson 和 DetailedFileCoverageJson。
新报告包括三个部分:
Files,包括所覆盖源代码文件的信息。 详细报告还提供各文件所覆盖范围的信息。 TestLists,提供按测试集聚合的测试的信息。 Tests,包括每个测试的详细信息。
您现在可以使用注释从覆盖率分析中排除某些行或代码块。 可用选项:
// dotcover disable
var i = 1;
var j = 10;
// dotcover enable
/* dotcover disable */ var i = 1; /* dotcover enable */
var i = 1; // dotCover disable this line
// dotcover disable next line
var j = 100;
要使某一选项起作用,必须引用 JetBrains.dotCover.MSBuild NuGet 软件包。 这是一个仅用于开发的依赖项,不会作为运行时依赖项添加到项目中。
我们改进了覆盖率数据的后处理。 例如,控制台运行程序 (IncludePerTest=true) 生成报告所需的时间要少得多。
dotCover 命令行运行程序现在可以在配备 Apple 芯片处理器的计算机上运行。 它可以为 .NET 6 应用程序(原生模式)和 .NET 5 应用程序(Rosetta 2 模式)提供覆盖率分析。
新的 Code Vision 指标已添加到 Rider 中的 dotCover。 dotCover 会针对一组测试中包含的每个类型成员显示成功和失败测试的数量。 您还可以使用 Code Vision 通知运行、覆盖和调试测试。
dotCover .NET 全局工具现在包括 merge 和 report 命令。
我们改进了 dotCover 命令行运行程序的性能,加快了覆盖率分析。
dotCover 控制台运行程序能够收集个别测试的覆盖率信息,并显示在生成的报告中。 目前,仅支持以下测试运行程序:dotnet test、dotnet vstest、vstest.console.exe。 例如:dotCover.exe dotnet --output=AppCoverageReport.xml --reportType=XML --IncludePerTestInfo=Method -- test "C:\MyProject\MainTests.csproj"
现在,您可以在 Visual Studio 中使用 ReSharper 配置覆盖筛选器,方法与在 JetBrains Rider 中相同。
您可以将 dotCover 控制台运行程序作为 dotnet 全局工具安装:dotnet tool install --global JetBrains.dotCover.GlobalTools --version 2021.1.0
使用它分析 .NET Core 项目和单元测试的覆盖率。