跳至內容

Rust 測試洞察

Tuist 會回報 cargo test 的個別測試結果,包括單元測試、整合測試與文件測試。無需額外的 Rust 相依性或測試執行器。

Requirements

回報你的測試執行#

bash
tuist cargo test --workspace

設定好 mise Cargo 包裝器後,你可以繼續輸入 cargo test。Cargo 仍會以其慣用的參數、輸出與結束碼來編譯並執行你的測試。回報失敗不會改變測試結果。

你可以照常選擇套件或篩選測試:

bash
tuist cargo test -p store
tuist cargo test authentication

Tuist 追蹤的內容#

  • 來自已完成測試套件的通過、失敗與忽略測試。
  • 單元測試、整合測試與文件測試。
  • 整套測試的耗時。
  • 可用的分支、提交、CI 與執行器中繼資料。

經篩選的測試以及在失敗後未執行的測試,永遠不會被回報為通過。結果會顯示在儀表板的 測試 底下。

套件、模組與測試案例#

Tuist 會依 Cargo 套件與目標分組結果。Rust 模組路徑會在目標內將個別測試分組:

儀表板標籤Rust 含義範例
模組Cargo 套件與目標store::api
測試套件Rust 模組路徑api::authentication
測試案例個別測試rejects_invalid_token

文件測試會使用獨立的模組,例如 store::doctest/store。其名稱包含原始碼位置,因此移動範例可能會改變其識別。

文件測試與耗時#

文件測試會以你慣用的測試指令執行,包括 compile_fail、should_panic 與 no_run 範例。若只想執行文件測試:

bash
tuist cargo test --doc

穩定的 libtest 會回報整套測試時間,但不會回報個別測試耗時。無法取得的計時數據不會納入各案例的耗時歷史與耗時分析,但測試結果仍會計入可靠性與執行次數。

回報限制#

個別結果會從 Cargo/libtest 的預設輸出收集。使用 --no-run、--list、靜默或 Cargo 詳細輸出、替代格式,或未捕捉的測試輸出的指令,會正常執行但不會回報個別測試。自訂測試驅動、不完整的摘要、模糊的目標歸屬,以及過大的報告不會上傳。

若工作區套件具有同名的整合目標,請使用 -p <package> 選擇其中一個。回報支援精確的工作區套件名稱;相依套件、帶版本限定的選擇器與萬用字元會正常執行,但不會被回報。絕對的文件測試路徑會被省略,以避免結帳路徑進入測試識別。

Tuist 會在收集結果時串流輸出。這可能影響自動色彩偵測。在 Cargo 結束後仍保持輸出管道開啟的背景程序,可能導致報告被省略,但不會改變 Cargo 的結束狀態。

可靠性與選擇#

使用 不穩定測試偵測與隔離 來調查不穩定的測試,並將它們靜音或略過。測試分片 會將整個 Cargo 目標分散到 CI 工作節點。純 Cargo 測試執行不提供涵蓋率匯入、基於涵蓋率的測試選擇,以及一次建置分散功能。

疑難排解#

若測試執行未出現在儀表板中,請啟用除錯輸出以查看為何未傳送報告:

bash
TUIST_DEBUG=1 tuist cargo test --workspace