JetBrains dotCover
TeamCity"自带JetBrains dotCover的控制台运行器。 除了捆绑版本之外,您还可以安装另一个版本的 JetBrains dotCover Command Line Tools,和/或使用 管理 | 工具 页面更改默认设置。
在构建步骤的 .NET 覆盖率区域选择了适当的选项后,您将能够收集 .NET 项目的代码覆盖率,然后在 TeamCity web UI 中查看覆盖率统计信息和详细的覆盖率报告。
如果您拥有 dotCover 的许可证并已将其安装在开发机器上,那么可以下载并使用 TeamCity Visual Studio 插件 在 Visual Studio 内查看 TeamCity 收集的覆盖率结果。
dotCover 设置
到 dotCover Home 的路径 | 将此字段留空以使用默认的 dotCover。 您可以将任何额外安装的版本标记为默认。 |
筛选器 | 为代码覆盖率指定一个新的换行分隔的过滤器列表。 使用 例如,要在所有 也可以参考相关的 博客文章。 |
属性过滤器 | 如果您不想了解整个解决方案的覆盖率数据,您可以将标记有属性的代码(例如,带有 |
其他实参 | 提供一个新行分隔的 |
请注意,dotCover 覆盖引擎报告的是语句覆盖情况,而非行覆盖情况。
在不同构建中编译和测试
为了构建一份连贯的覆盖率报告,dotCover 必须能够在构建检出目录下找到源文件,如果您在同一构建中构建二进制文件并收集覆盖率,或者您使用不同的构建,但它们使用相同的 快照依赖关系,以及相同的代理和相同的 VCS 设置,这应该很容易做到。
如果您需要在一次构建中生成二进制文件,并使用不同的 checkout settings 在另一次构建中收集代码覆盖率,那么需要一些额外的属性。 假设:
构建配置 A 会编译带有调试信息的代码,并创建一个包含装配体和
.pdb
文件的工件构建配置 B 运行启用了 dotCover 的测试,并且对 A 有一个 快照依赖性。
要在 B 的构建结果的 Code Coverage 标签页中显示源代码,您需要将 B 指向与 A 相同的 VCS 根,以便将您的源代码放置在适当的位置(检出根),并在 A 的 来自同一链的构建 上添加一个 工件依赖(以便 dotCover 从 .pdb
文件获取源代码的路径)。
您还需要告诉 TeamCity 在哪里可以找到源代码。 要做到这一点,请执行以下操作:
在编译构建配置 A 中添加
teamcity.dotCover.sourceBase
配置参数,其值为%teamcity.build.checkoutDir%
。将配置参数
dotNetCoverage.dotCover.source.mapping
添加到您的测试配置 B 中,并赋值为%dep.btA.teamcity.dotCover.sourceBase%=>%teamcity.build.checkoutDir%
,其中btA
是您的配置 A 的实际 ID。
独立的 dotCover 运行器
从2024.03版本开始,您不仅可以通过启用 .NET 和 NUnit 运行器中的 ".NET Coverage" 来调用 JetBrains dotCover,还可以使用独立的 dotCover 运行器。
这个运行器使您可以:
使用 dotCover 覆盖率配置文件启动任何进程,并生成其自身的快照。
将前面步骤生成的快照合并,以在 代码覆盖率选项卡 上显示整合后的报告。
了解更多:dotCover。
捆绑的 dotCover 版本
TeamCity 版本 | dotCover 版本 |
---|---|
2018.1 | 2018.1.2 |
2018.2 | 2018.1.4 |
2019.1 | 2019.1.1 |
2019.2 | 2019.2.3 |
2020.1 | 2019.2.3 |
2020.2 | 2020.2.4 |
2021.1 | 2021.1.2 |
2021.2 ~ 2023.05 | 2021.2.2 |
2023.11 | 2023.2.2 |
2024.03 及更高版本 | 2023.3.3 |
您可以在 服务器管理 | 工具 页查看已安装的 dotCover 版本。 捆绑版本已被设为默认,您可以安装其他版本并更改默认设置。
跨平台 dotCover
TeamCity 支持通过跨平台的 JetBrains dotCover(版本 2019.2.3+)在 Linux 和 macOS 上收集 .NET Core 项目的覆盖率。
dotCover 2019.2.3 适用于 Windows ,并且被 TeamCity 打包在一起。 如果您需要在非 Windows 平台下收集代码覆盖率,请在 管理 | 工具 中添加 跨平台 dotCover.GlobalTool,并在 .NET 构建步骤中启用 dotCover 覆盖率。 如果您也想在 Windows 下使用跨平台 dotCover,请确保代理已安装 .NET Framework SDK 4.6.1+。
您还可以在容器内运行 dotCover 代码覆盖率分析,配合 容器包装器 扩展。