使用虚影文本扩展测试并修复失败的测试

已完成

测试项目包含几个测试用例后,GitHub Copilot可以帮助你扩展覆盖范围并解决故障,而无需离开Visual Studio Code。 虚影文本建议会在正在编辑的文件中添加附加测试用例,而测试资源管理器和 /fixTestFailure 斜杠命令有助于诊断和修复失败的测试。 这些功能共同为你在聊天视图中启动的单元测试工作流形成了完整闭环。

通过幽灵文本建议扩展测试覆盖范围

虚影文本是在编辑器中键入时出现的内联代码补全。 当测试文件已包含几个测试用例时,GitHub Copilot使用现有模式为其他方案建议类似的测试用例。 这是在初始测试到位后扩展覆盖范围的最快方法。

若要使用虚影文本扩展测试文件:

  1. 打开至少包含一两个完整测试用例的测试文件。

  2. 将光标置于最后一个测试用例的末尾,然后按 Enter 启动一个新行。

  3. 开始键入新的测试方法或编写描述性注释,例如 // Test that ProcessOrder throws when the order total is negative

    GitHub Copilot 显示虚影文本建议,以便根据周围的代码、导入和现有测试模式补全测试方法。

  4. Tab 接受建议,或按 Esc 将其消除。

  5. 根据需要完善已接受的建议。 可以继续键入以扩展测试,也可以按 Enter 触发下一个虚影文本建议。

当以下情况下,虚影文本效果最佳:

  • 测试文件已显示希望GitHub Copilot遵循的模式(例如,Arrange-Act-Assert 结构或参数化测试属性)。
  • 测试中的方法通过 using 指令或导入的命名空间在文件中引用。
  • 注释清楚地说明要测试的方案。

Tip

使用虚影文本快速将边缘事例添加到现有测试类。 若要进行更实质性的工作,例如创建全新的测试类,请返回到聊天视图并使用 Ask、Plan 或 Agent 代理。

在测试资源管理器中修复失败的测试

测试失败时,测试资源管理器会向GitHub Copilot提供一键式入口点。

  1. 从测试资源管理器或测试方法旁边的绿色播放按钮运行测试。

  2. 在测试资源管理器中,将鼠标悬停在失败的测试上。

  3. 选择“ 修复测试失败 ”按钮(sparkle 图标)。

    GitHub Copilot打开聊天会话,附加失败的测试及其输出作为上下文,并建议进行修复。

  4. 审查建议的修复方案。

    根据失败原因,建议可以更新应用程序代码、测试代码或两者。

  5. 应用或放弃建议。

    使用 Keep 应用建议的更改,或使用 撤消 将其丢弃。 重新运行测试以确认修复。

使用/fixTestFailure修复失败的测试

还可以从“聊天”视图启动修复工作流,当想要附加额外的上下文或一次处理多个失败的测试时,该工作流非常有用。

  1. 打开“聊天”视图。

  2. 输入/fixTestFailure斜杠命令。

  3. (可选)附加其他上下文,例如相关的源文件或最近的终端输出。

  4. 按照GitHub Copilot的建议修复失败的测试,然后重新运行测试以确认修复。

让代理自动监视和修复故障

使用 代理 运行测试时,它会监视测试输出、标识失败,并自动尝试修复并重新运行测试。 在搭建新测试项目或进行影响许多测试的大型更改时,这非常有用。

若要使用代理进行自动测试维护,请执行以下操作:

  1. 打开“聊天”视图,然后从代理选取器中选择 “代理 ”。

  2. 提供包括运行测试的提示,例如: Run the xUnit tests in the Calculator.Tests project. If any tests fail, propose and apply fixes, then rerun the tests until they pass.

  3. 确认或拒绝代理建议的工具调用和终端命令。

  4. 在接受这些更改之前,请先查看 Agent 所做的更改。

为作业选择正确的工具

使用以下指南确定要使用的功能:

  • 如果要将更多测试用例添加到已显示模式的现有测试文件中,虚影文本最好。
  • 在测试资源管理器中修复测试失败 最适合在单个测试失败时使用,并且你希望快速进行有针对性的修复。
  • “聊天”视图中的 /fixTestFailure 最适合在想要添加更多上下文或逐一排查多次失败情况时使用。
  • 代理驱动的测试运行最适合在你希望 GitHub Copilot 在一次会话中跨多个文件运行测试、诊断失败并进行修复时使用。

这些工具一起完成单元测试工作流。 “聊天”视图、“计划”智能体和智能体会生成初始测试;虚影文本会填充附加覆盖范围;随着代码的发展,修复测试失败功能将使套件保持绿色。