使用 GitHub Copilot Chat 檢視產生單元測試

已完成

Visual Studio Code 中的聊天視窗是使用 GitHub Copilot 產生單元測試的主要平台。 從聊天視窗中,你可以設定測試框架,產生檔案或選取的測試,並不斷優化結果,直到測試符合專案慣例。 本單元專注於 代理模式,直接將生成的測試寫入測試檔案,執行結果測試,並對失敗進行迭代——所有步驟皆由單一聊天提示器完成。 你也可以事先使用 詢問模式 ,探索測試選項,而不必更改任何檔案。

打開聊天視窗

請使用以下任一選項開啟聊天視窗:

  • Ctrl + Alt + I (Windows/Linux)或 Cmd + Alt + I (macOS)。
  • 在標題欄中選擇GitHub Copilot圖示,然後選擇Toggle Chat

聊天視窗會在次要側欄開啟,並提供三種設定選項,影響你發送的每個提示:

  • 代理程式目標:代理程式執行的位置。 選擇 本地(Local )以在編輯器中互動式執行代理程式,並可完整存取你的工作區、工具和模型。
  • 代理人:AI 在本次會議中扮演的角色。 內建的本地代理包括 AskPlanAgent
  • 權限等級:代理在呼叫工具和終端指令時擁有多少自主權。 選項有 預設核准繞過核准自動駕駛

對於產生單元測試,建議從啟用 預設核准Agent 開始。 代理模式可以編輯檔案、執行終端機指令並重跑測試,因此它可以接收像「為此方法產生測試」這樣的提示,產生一個只需審查即可運作的測試檔案。 預設核准會要求你確認每次工具呼叫,讓你隨時掌握狀況。

可選擇性地使用詢問模式,先探索測試選項

提問模式可以在聊天中回答問題,無需修改檔案或使用工具。 這使它特別適合用在你想先規劃好處理方式,再讓 Agent 進行任何變更的情況。 當你想要這麼做時,請使用 Ask 模式:

  • 在決定結構前,先比較複雜方法的候選測試案例。
  • 識別值得涵蓋的邊緣案例與邊界條件。
  • 請推薦測試框架或斷言風格。
  • 在聊天中看到一個測試範例,但不要寫入磁碟。

使用詢問模式進行分析:

  1. 打開聊天視窗,從經紀人選擇器中選擇 「詢問 」。

  2. 將相關檔案或選取內容附加為背景資訊(例如使用 #selection 或拖曳檔案加入)。

  3. 提出分析問題。 例如: What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.

  4. 先檢視回應,然後將代理選擇器切換到 Agent 來產生實際測試。

使用 /setupTests 設定測試框架

如果你的專案還沒設定測試框架,GitHub Copilot 可以推薦一個並引導你完成設定步驟。 /setupTests slash 指令在任何代理程式中都能使用,但代理模式也能安裝套件並幫你建立測試專案。

  1. 打開聊天視窗,從代理人選擇器中選擇 代理人

  2. 在聊天輸入欄輸入指令 /setupTests

  3. 確認代理程式建議的工具調用與終端機指令以安裝套件、架構測試專案,並推薦 Visual Studio Code 測試擴充功能。

/setupTests 當你開始新的測試專案或是尚未包含測試的專案上線時,它最有用。

使用 /tests 產生測試

/tests slash 指令會為目前在編輯器中啟用的程式碼產生單元測試。 在代理模式下,產生的測試會直接寫入適當的測試檔案中。 GitHub Copilot 會偵測現有的測試框架與程式碼風格,並產生符合的測試。

要為整個檔案產生測試:

  1. 打開你想測試的應用程式碼檔案。

  2. 開啟聊天檢視,並確認已選取 Agent

  3. 在聊天輸入欄中,輸入 /tests,接著輸入任何其他補充指示。 例如: /tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.

  4. 確認代理用來讀取上下文、撰寫測試,並(可選地)執行測試的工具呼叫。

  5. 檢視代理人所套用的變更。

    代理程式會在現有測試檔可用時附加測試,或在適當位置建立新的測試檔。 差異檔會出現在編輯器裡,讓你可以驗證每個變更。

  6. 選擇 保留撤銷 以接受或捨棄變更。

要為特定方法或程式碼區塊產生測試:

  1. 打開應用程式碼檔案。

  2. 選擇你想測試的方法或區塊。

  3. 在聊天檢視中,輸入 /tests,然後再輸入參照所選內容的指示。 例如: /tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.

  4. 檢視並保留或捨棄所產生的變更。

產生帶有自然語言提示的測試

你不一定要使用斜線指令。 當你加入足夠的上下文時,代理會根據自然語言提示產生測試。 範例:

  • 「為此檔案中的方法產生 xUnit 測試,並加入 Calculator.Tests 專案。」
  • CalculateDiscount 方法撰寫單元測試,包括負值和零的邊界情況。 寫完測試後再執行。
  • 「為本模組的資料存取層建立整合測試。」

因為代理程式可以執行指令,你可以在同一個提示符中包含驗證步驟。 要求代理程式在寫完測試後執行這些測試,能讓它在將工作交還給你之前,先發現並修正明顯的失敗。

為你的提示加入背景

產生的測試品質取決於你提供的情境。 請使用以下一項或多項選項,為聊天視窗提示附加上下文:

  • 新增情境 按鈕:開啟快速選取,新增檔案、資料夾、符號或目前編輯器的選擇。
  • 拖放:從檔案總管檢視或編輯標籤拖曳檔案到聊天畫面,以附加內容。
  • # 提及:輸入 #,再輸入檔案、資料夾或符號名稱,將其加入為脈絡。 使用 #selection 附加當前編輯器選擇,或使用 #codebase 讓GitHub Copilot搜尋工作區相關上下文。
  • 外部檔案:在編輯器中開啟 markdown 檔案(例如貢獻者指引或測試慣例),並透過 「新增上下文」附加。 代理會利用內容來形成所生成的測試。

例如,如果編輯器中只顯示一個方法,你可以詢問: Write a unit test for the method in #editor。 若多個方法可見或目標方法超出可見範圍,請先選擇程式碼並詢問: #selection write unit tests for the selected code

檢視並修正代理程式的變更

即使代理程式直接將測試寫入你的測試專案,你仍能掌控:

  • 檢視差異:代理所更改的每個檔案會在編輯器中開啟,並標示出建議的編輯內容。 接受前先檢視差異內容。
  • 保留或撤銷:使用 Keep 來接受變更,或 用 Undo 來還原。 你也可以在編輯器中還原個別區塊。
  • 建置並執行:保留變更後,建立測試專案,並從測試檔案總管或終端機執行測試,確認所有內容編譯並通過。
  • 迭代:在同一聊天會話中使用後續提示來精煉特定測試、新增案例或重新命名方法。

使用自訂指令自訂測試生成

如果你的組織有特定的測試需求,你可以自訂 GitHub Copilot 如何產生測試,讓輸出與你的標準一致。 自訂說明可以讓你:

  • 指定偏好的測試框架(例如用 xUnit 代替 NUnit)。
  • 定義測試類別與方法的命名慣例。
  • 設定程式碼結構偏好,例如 Arrange-Act-Assert 模式。
  • 請求特定的測試模式,例如參數化的邊界值測試。

將自訂指令儲存在 *.instructions.md 工作區的檔案中。 使用 applyTo 中繼資料欄位,只將指令套用到測試檔案。 例如,一個 applyTo: tests/** 值將指令範圍到目錄中的 tests/ 檔案。 在原始碼控制中共享檔案,讓團隊中的每位開發人員都能擁有相同的測試情境。

Important

產生的測試案例可能無法涵蓋所有情境。 手動審查與程式碼審查仍是必要的,以確保測試品質。