dotCover 功能

dotCover 是一款 .NET 单元测试和代码覆盖率工具,可以直接在 Visual StudioJetBrains Rider 中运行,能够帮助您了解单元测试的代码覆盖程度,为代码覆盖率提供绝佳的可视化方式,并支持持续集成。 dotCover 计算并报告面向 .NET Framework.NET CoreMonoMono for Unity 的应用程序的语句级代码覆盖率。

Visual Studio 和 Rider 集成

与 Visual Studio 和 JetBrains Rider 集成

dotCover 是一款可以集成到 Visual Studio 和 JetBrains Rider 中的插件,让您能够在不离开代码编辑器的情况下分析和可视化代码覆盖率。这包括直接在 IDE 中运行单元测试和分析覆盖结果,以及支持不同颜色主题、新图标和菜单。

dotCover 支持 Visual Studio 2010–2026 和 JetBrains Rider 2018.2 或更高版本。

macOS 和 Linux 支持

在 Windows、macOS 和 Linux 上运行

在 Windows 上,dotCover 作为 Visual Studio 或 JetBrains Rider 的一部分运行,支持针对任何受支持版本的 .NET Framework、.NET Core、.NET、Mono 5.10 或更高版本以及 Unity 2018.3 或更高版本的项目。在 macOS 和 Linux 上,dotCover 只能用作 JetBrains Rider 的一部分。

捆绑的单元测试运行程序

运行和管理单元测试

dotCover 绑定了一个单元测试运行程序,另一款适用于 .NET 开发者的 JetBrains 工具 ReSharper 也使用该运行程序。

该运行程序可以在 Visual Studio/JetBrains Rider 中运行,允许通过会话管理单元测试,并支持多种单元测试框架,即 MSTest、NUnit、xUnit(全都开箱即用)和 MSpec(通过插件)。

使用dotCover进行连续测试

持续测试

dotCover 支持持续测试:一种现代的单元测试工作流,在这个流程中,dotCover 可以实时发现哪些单元测试受到最新代码更改的影响,并自动为您重新运行受影响的测试。

根据您的偏好,dotCover 可以在保存文件、生成解决方案时或在您明确告知 dotCover 的情况下运行受影响的测试。

可为任意单元测试会话启用持续测试模式:通过这种方式,您可以选择希望哪些测试持续运行,而哪些测试以传统方式运行。

通过 dotCover 的单元测试运行程序来运行和管理单元测试

单元测试覆盖率

dotCover 的一个主要用例是分析单元测试覆盖率,即找出哪些应用程序业务逻辑被单元测试覆盖,哪些没有覆盖。

除了单元测试运行结果外,dotCover 还会显示一个覆盖树,其中包含单元测试对特定项目、命名空间、类型或类型成员的覆盖程度。

Visual Studio 和 JetBrains Rider 中的覆盖高亮显示

为了可视化覆盖率数据,dotCover 可以直接在代码编辑器中高亮显示代码行。并允许通过设置在高亮标记和多彩背景或两者同时显示间切换。

请注意,高亮显示不仅可以显示覆盖和未覆盖的代码,还可以显示覆盖单元测试的结果。绿色表示测试通过,红色表示至少有一个覆盖语句的测试失败。灰色显示未覆盖的代码。

从代码导航到覆盖此代码的单元测试

导航到覆盖测试

dotCover 提供命令(和键盘快捷键)来检测哪些测试覆盖了代码的特定位置,这些位置可以是类、方法或属性。

您可以从 Visual Studio 文本编辑器或从 dotCover 的 Coverage Tree 视图调用该命令。

您可以从列出覆盖测试的弹出窗口导航到其中任意测试。此外,您还可以立即运行它们,或将其添加到现有单元测试会话。

dotCover Hot Spots 视图

Hot Spots 视图

Hot Spots 视图旨在帮助您确定解决方案中风险最高的方法。热点根据方法的高循环复杂度和低单元测试覆盖率进行计算。

属性筛选器补充覆盖率筛选器

覆盖率筛选器

有时,您不希望了解整个解决方案范围内的覆盖率数据。例如,您也许对标记 ObsoleteAttribute 的代码或特定遗留项目的覆盖率统计不感兴趣。

在这种情况下,您可以根据项目、命名空间、类型或类型成员名称设置全局或解决方案特定的覆盖率筛选器。还可以使用属性筛选器将收集覆盖率信息的范围限制为使用某些属性标记(或未标记)的代码。

当您从覆盖率结果中排除某些项目时,dotCover 会立即重新计算统计数据

从覆盖树中排除节点

作为提前设置的或应用到打开的任何解决方案的筛选器的替代方法,您可以在使用某些项目时从覆盖率结果中将其排除。

当您已经收集了覆盖率数据后,可以选择从覆盖树中排除特定节点(并且可选择创建永久覆盖率筛选器)。一旦您这样做,dotCover 将立即重新计算覆盖率统计数据。

dotCover 可将覆盖率数据导出为多种格式,包括 XML、HTML 和 JSON

多种报告格式

dotCover 帮助您以所需的方式处理覆盖率数据。

导出为多种格式,包括 HTML、XML、JSON 和用于 NDepend 的 XML,使您能够与团队的其他成员共享覆盖率报告,或将覆盖率信息传递给外部服务。

dotCover 可用于手动测试

用于人工测试的代码覆盖率

作为单元测试覆盖率的替代,dotCover 可以在从 Visual Studio 中执行的 .NET 应用程序上运行覆盖率分析。

这使 QA 工程师能够执行用例场景,并检查在此用例期间实际执行了哪些代码。保存与合并覆盖率快照支持执行不常用的测试用例。

作为持续集成的一部分在 TeamCity 高亮显示代码覆盖

覆盖率分析作为持续集成的一部分

dotCover 非常适合持续集成服务器,特别是 JetBrains 的自有产品 TeamCity

首先,通过 Visual Studio 中的 TeamCity 插件,dotCover 可以从 TeamCity 服务器获得覆盖率数据,无需在本地计算机上运行覆盖率分析。

另一方面,dotCover 覆盖率分析引擎绑定到免费版 TeamCity,有助于安排覆盖率作为持续集成流程的一部分运行,并生成服务器端覆盖率报告。 TeamCity 理解 dotCover 控制台运行程序的输出,并且会在生成日志中高亮显示其错误和警告。