开始
JetBrains dotCover 是一个 .NET 单元测试运行器和代码覆盖工具。 dotCover 让我们分析 .NET 应用程序代码的实际测试覆盖程度。 通过在单元测试期间或手动运行应用程序时测量方法调用,dotCover 向我们展示了哪些语句被覆盖了,哪些没有被覆盖。
dotCover 集成到 Visual Studio 2010、2012、2013、2015、2017、2019 和 2022。 安装 dotCover(无论是否与其他 dotUltimate 工具一起安装)并打开 Visual Studio 后,您会在主菜单中的 和 下找到 dotCover 命令。 通过这些菜单,您可以执行 dotCover 中可用的各种命令。
单元测试和代码覆盖率
使用 dotCover 的最基本场景是测量运行单元测试时实际执行了多少代码。 基本条件如下:您已在 Visual Studio 中打开了解决方案,并且解决方案中的代码已通过一些单元测试覆盖。 任务是了解代码的覆盖程度。
分析解决方案中单元测试的覆盖率
从主菜单中选择 。 这将打开 单元测试资源管理器 工具窗口。 在这里,您可以查看解决方案中有多少测试。

在 单元测试资源管理器 窗口中,选择您想要分析覆盖率的测试项目或测试。 请注意,您可以使用 覆盖过滤器 来限制覆盖范围。
这将运行一个常规的单元测试会话,但 dotCover 会在后台收集覆盖数据。 dotCover 会在新打开的 单元测试会话 窗口中实时显示测试结果。 覆盖结果(测试如何覆盖代码中的特定类和方法)将显示在 单元测试覆盖 工具窗口中。

如果您想查看哪些测试具体覆盖了某个类或方法,请在 单元测试覆盖率 窗口中选择它,并在上下文菜单中选择 显示覆盖的测试。

通过点击 高亮显示代码
在 单元测试覆盖率 窗口中可视化代码覆盖率。
默认情况下,覆盖率和测试结果通过编辑器边栏中的标记显示:如果与当前语句相关的任何测试失败,标记为红色;如果所有测试通过,标记为绿色;如果没有测试覆盖此语句,标记为灰色。
单元测试覆盖率 窗口中包含另一个非常有用的指标。 点击 热点
后,它将向您显示一个潜在风险类的“云”:这些类的圈复杂度较高但测试覆盖率较低。
应用程序的覆盖率
dotCover 使我们能够计算特定用例场景的代码覆盖率。 按下 Control+Alt+K P 或从菜单中选择 在 dotCover 控制下启动解决方案的启动项目。 或者, Control+Alt+K K 或 使我们能够 指定要计算代码覆盖率的应用程序。

接下来,我们可以运行应用程序并完成一个用例场景,然后告诉 dotCover 在完成后获取快照。 只要被测试的应用程序在 dotCover 控制下运行,就会显示控制器对话框,您可以点击 获取快照 并检查我们在测试应用程序时覆盖了哪些代码行。

过滤覆盖结果
代码覆盖结果可能会被基础设施代码或我们不感兴趣检查的项目所干扰。 我们可以通过右键点击特定节点并选择 排除并创建覆盖过滤器 来排除它们:

排除项目并创建相应的 运行时覆盖过滤器 将告诉 dotCover 下次运行覆盖分析时不覆盖该项目。
覆盖过滤器也可以通过 筛选 dotCover 设置(Control+Alt+K F 或 )进行管理。 过滤器可以为您打开的任何解决方案定义,也可以限定为活动解决方案。

一旦掌握了这些基础知识,您可以学习 键盘快捷键 或查看如何使用 dotCover 的命令行版本。