Today I will… improve test coverage

TL;DR · AI 摘要
通过Visual Studio代码覆盖率分析与GitHub Copilot测试代理,将Interview Coach应用测试覆盖率从37%提升至81%。
核心要点
- 使用Visual Studio代码覆盖率分析工具定位测试缺口
- GitHub Copilot测试代理可自动生成8个新测试用例
- 全解决方案分析识别出3个无测试的项目并补充测试
结构提纲
按章节快速跳转。
- §引言
介绍提升Interview Coach应用测试覆盖率的目标与现状
- ·基线定义
通过代码覆盖率分析确定当前测试缺口分布
使用GitHub Copilot测试代理为InterviewSessionTool类生成测试用例
通过#solution上下文进行全项目测试缺口分析
- ›结果验证
覆盖率从37%提升至81%,识别出无测试价值的枚举文件
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 测试覆盖率提升实践
- 工具链
- Visual Studio代码分析
- GitHub Copilot测试代理
- 实施步骤
- 基线评估
- 针对性测试生成
- 全方案分析
- 成果指标
- 覆盖率提升44%
- 新增3个项目测试
金句 / Highlights
值得收藏与分享的关键句。
覆盖率从初始37%提升至最终81%,新增3个完整测试项目
Test Agent自动识别AgentMode.cs等枚举文件无需测试
使用@test #solution指令触发全解决方案测试分析
今天我将... 提高测试覆盖率 - Visual Studio 博客
今天我想探讨如何提高 Interview Coach 应用程序的测试覆盖率。该应用程序已经包含了一些单元测试,但我确信还有改进空间。
确定基准线
在开始编写测试之前,先了解当前的覆盖率基准是非常有必要的,这样我们才能找出测试的缺口,而不是为了编写测试而编写测试。
我们可以通过“为所有测试分析代码覆盖率”功能来实现这一点,该功能可以通过命令面板(CTRL + SHIFT + P)或测试菜单访问。
运行分析器后,我们可以看到当前的覆盖率情况:
看起来我们的覆盖率并不理想,InterviewCoach.Agent 项目存在大量缺口,而其他项目如 InterviewCoach.Mcp.InterviewData 甚至没有测试。让我们从该项目中 InterviewSessionTool 类的测试开始。
使用 Copilot 编写测试
我们要为其编写测试的类是一个简单的类,它接收我们仓库的接口,这样我们可以模拟数据库调用,方法接收有效负载以与仓库交互。
为了加快进度,我们将使用 GitHub Copilot 的测试代理,并向其提供要编写测试的文件。
代理将分析该类,然后分析整个解决方案以找到编写测试的正确方法。由于该项目目前还没有测试类,它将生成一个测试类,添加引用,然后编写测试用例。
几分钟后,代理完成了工作。
它给出了已完成内容的简洁摘要:我们新增了 8 个测试,并创建了一个新的测试项目。测试已运行,它建议我们再次运行覆盖率报告。
与之前相比,这是一个显著的提升。
全解决方案测试分析
测试代理已经很好地为我们的类构建了测试,但代码库中仍有大量代码未被测试,我们可以使用测试代理来帮助解决这个问题,因为它可以被指示在整个解决方案中运行并分析我们的缺口:
@test #solution这次,我们使用了 Copilot 的 #solution 上下文,现在测试代理将分析所有项目和代码路径。几分钟后,Copilot 给我返回了覆盖仓库、DbContext、我们的扩展方法以及 InterviewCoach.Agent 项目中更多测试的测试用例。它还识别出像 AgentMode.cs 这样的文件不需要编写测试,因为它只包含一个枚举,因此没有可测试的内容。
通过这些改进,我们的覆盖率提升到了 81%,从最初的 37% 提升,现在包括了我们最初完全没有测试的三个项目。
总结
虽然我们了解编写测试的价值,但知道在哪里投入努力往往被忽视。使用 Visual Studio 的代码覆盖率分析可以为我们提供概览,帮助我们识别测试中的缺口,然后结合测试代理,我们可以为单个类构建有针对性的测试,或执行整个解决方案的分析并提升覆盖率。
.entry-content
AI 免责声明 /think