Gemini CLI 使用手冊
首頁
命令列介面
核心概念
工具執行
開源貢獻
報名課程
首頁
命令列介面
核心概念
工具執行
開源貢獻
報名課程
  • 歡迎使用 Gemini CLI 文件
  • Gemini CLI 執行與部署
  • Gemini CLI 架構總覽
  • 檢查點(Checkpointing)
  • Gemini CLI 擴充套件
  • 使用 OpenTelemetry 進行可觀測性
  • 疑難排解指南
  • 服務條款與隱私權公告
  • 套件總覽
  • 整合測試
  • Gemini CLI:配額與定價
  • Gemini CLI 的沙箱機制
  • 卸載命令列介面 (CLI)

整合測試

本文件說明本專案所使用的整合測試框架相關資訊。

概述

整合測試旨在驗證 Gemini CLI 的端對端功能。這些測試會在受控環境中執行已建置的二進位檔,並確認其在與檔案系統互動時的行為是否如預期。

這些測試位於 integration-tests 目錄中,並透過自訂的測試執行器來執行。

執行測試

整合測試不會隨預設的 npm run test 指令一併執行。必須明確地使用 npm run test:integration:all 腳本來執行。

也可以使用以下捷徑來執行整合測試:

npm run test:e2e

執行特定一組測試

若要執行部分測試檔案,你可以使用 npm run <integration test command> <file_name1> ....,其中 <integration test command> 可以是 test:e2e 或 test:integration*,而 <file_name> 則是 integration-tests/ 目錄下任一 .test.js 檔案。例如,下列指令會執行 list_directory.test.js 和 write_file.test.js:

npm run test:e2e list_directory write_file

依名稱執行單一測試

若要依測試名稱執行單一測試,請使用 --test-name-pattern 旗標:

npm run test:e2e -- --test-name-pattern "reads a file"

執行所有測試

若要執行整個整合測試套件,請使用以下指令:

npm run test:integration:all

Sandbox 矩陣

all 指令會針對 no sandboxing、docker 和 podman 執行測試。 每一種型別都可以透過以下指令單獨執行:

npm run test:integration:sandbox:none
npm run test:integration:sandbox:docker
npm run test:integration:sandbox:podman

診斷

整合測試執行器(integration test runner)提供多種診斷選項,以協助追蹤測試失敗的原因。

保留測試輸出

你可以保留測試執行期間所產生的暫存檔案,以便檢查。這對於偵錯檔案系統操作相關問題特別有用。

若要保留測試輸出,請將 KEEP_OUTPUT 環境變數設為 true。

KEEP_OUTPUT=true npm run test:integration:sandbox:none

當輸出被保留時,測試執行器會顯示本次測試執行所使用的唯一目錄路徑。

詳細輸出

若需更詳細的除錯資訊,請將VERBOSE環境變數設為true。

VERBOSE=true npm run test:integration:sandbox:none

當在同一個指令中同時使用 VERBOSE=true 和 KEEP_OUTPUT=true 時,輸出內容會即時串流到主控台(console),同時也會儲存到該整合測試的暫存目錄中的日誌檔案。

詳細輸出(verbose output)會經過格式化,以清楚標示日誌的來源:

--- TEST: <log dir>:<test-name> ---
... output from the gemini command ...
--- END TEST: <log dir>:<test-name> ---

程式碼檢查與格式化

為了確保程式碼品質與一致性,整合測試檔案會作為主要建置流程的一部分進行程式碼檢查(linting)。你也可以手動執行 linter 與自動修正工具。

執行 linter

若要檢查是否有程式碼檢查錯誤,請執行以下指令:

npm run lint

你可以在指令中加入:fix旗標(flag),以自動修正所有可修正的 lint 錯誤:

npm run lint:fix

目錄結構

整合測試會在.integration-tests目錄下,為每一次測試執行建立一個獨立的目錄。在這個目錄內,會針對每個測試檔案建立一個子目錄,而在該子目錄下,則會為每個個別的測試案例再建立一個子目錄。

這樣的結構能讓你輕鬆定位到特定測試執行、檔案或案例所產生的產物。

.integration-tests/
└── <run-id>/
    └── <test-file-name>.test.js/
        └── <test-case-name>/
            ├── output.log
            └── ...other test artifacts...

持續整合 (Continuous Integration)

為了確保整合測試(integration tests)能夠持續執行,我們在 .github/workflows/e2e.yml 中定義了一個 GitHub Actions 工作流程(workflow)。此工作流程會自動針對發送到 main 分支(branch)的 pull request,或是當 pull request 被加入合併佇列(merge queue)時,執行整合測試。

該工作流程會在不同的沙箱機制(sandboxing)環境下執行測試,以確保 Gemini CLI 能在各種情境下被驗證:

  • sandbox:none:在沒有任何沙箱機制的情況下執行測試。
  • sandbox:docker:在 Docker 容器中執行測試。
  • sandbox:podman:在 Podman 容器中執行測試。
Last Updated: 10/1/25, 8:28 PM
Contributors: Will
Prev
套件總覽
Next
Gemini CLI:配額與定價
本網站由 Will 保哥 翻譯、建置與維護,歡迎追蹤我的
歡迎追蹤我的 Will 保哥的技術交流中心 粉絲團