今天我将……提升测试覆盖率

今天我将……提升测试覆盖率

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

本文介绍如何提升 Interview Coach 应用的测试覆盖率:先用 Visual Studio 代码覆盖率分析发现初始覆盖率仅 37%,再用 GitHub Copilot 测试代理为 InterviewSessionTool 类生成 8 个测试及新测试项目,并通过 #solution 分析整个解决方案,补充仓储、DbContext 和扩展方法等测试,使覆盖率升至 81%,同时新增三个原本无测试的项目。

🔎

延伸解读

先测基线,再定方向

文章强调,写测试前应先通过 Visual Studio 的代码覆盖率分析建立基线,而不是盲目补测试。初始覆盖率仅 37%,且 InterviewCoach.Agent 等项目存在大量空白,InterviewCoach.Mcp.InterviewData 甚至没有测试。这种数据驱动的做法能帮助团队识别真正的缺口,把精力集中在最需要覆盖的代码上。

Copilot 测试代理的两种用法

文章展示了 GitHub Copilot 测试代理的两种使用方式:针对单个类(如 InterviewSessionTool)生成测试,代理会自动分析类与解决方案,创建测试项目并补充 8 个测试;以及使用 #solution 上下文进行全解决方案分析,代理会遍历所有项目与代码路径,为仓储、DbContext、扩展方法等生成测试。两种方式分别适合局部补强与全局提升。

覆盖率提升与合理取舍

借助测试代理,覆盖率从 37% 提升至 81%,并新增了三个原本无测试的项目。但文章也指出,代理会判断某些文件(如仅含枚举的 AgentMode.cs)没有测试价值,从而避免无效工作。这说明提升覆盖率并非追求 100%,而是结合代码实际作用,把测试投入在真正有逻辑分支和风险的地方。

Q&A

如何用 Visual Studio 分析代码覆盖率来找出测试缺口?

在 Visual Studio 中,可以通过命令面板(CTRL + SHIFT + P)或“测试”菜单运行“Analyze Code Coverage for All Tests”来分析所有测试的代码覆盖率。运行后会显示各项目的覆盖率情况,从而发现哪些项目或类缺少测试。

GitHub Copilot 测试代理如何为单个类生成测试?

使用 GitHub Copilot 的测试代理,提供要测试的类文件,代理会分析该类及整个解决方案,确定合适的测试方法。如果项目还没有测试类,它会生成一个测试项目、添加引用并编写测试用例。例如为 InterviewSessionTool 类生成了 8 个测试和一个新测试项目。

如何让 Copilot 测试代理分析整个解决方案的测试缺口?

在 Copilot 中使用 @test #solution 命令,测试代理会分析所有项目和代码路径,找出测试缺口并生成相应的测试。例如它补充了仓储、DbContext、扩展方法以及 InterviewCoach.Agent 项目中的更多测试。

提升测试覆盖率后,Interview Coach 应用的覆盖率从多少提升到了多少?

初始覆盖率为 37%,经过使用 Copilot 测试代理补充测试后,覆盖率提升到了 81%。

Copilot 测试代理在分析解决方案时,为什么没有为某些文件生成测试?

因为有些文件如 AgentMode.cs 只包含一个枚举,没有可测试的逻辑,所以代理认为为其编写测试没有价值,因此没有生成测试。

使用 Copilot 测试代理后,新增了哪些原本没有测试的项目?

新增了三个原本没有测试的项目,具体项目名称未在文中明确列出,但包括 InterviewCoach.Mcp.InterviewData 等。

🏷️

标签

➡️

继续阅读