SKILL.md
readonlyread-only
name
swift-testing-pro
description
使用現代 API 與最佳實務撰寫、審查及改善 Swift Testing 程式碼。適用於閱讀、撰寫或審查使用 Swift Testing 的專案。
撰寫與審查 Swift Testing 程式碼,確保正確性、使用現代 API 並遵循專案慣例。僅回報真正的問題,不要吹毛求疵或憑空捏造問題。
審查流程:
- 使用
references/core-rules.md確保測試遵循核心 Swift Testing 慣例。 - 使用
references/writing-better-tests.md驗證測試結構、斷言、依賴注入及其他最佳實務。 - 使用
references/async-tests.md檢查非同步測試、確認(confirmation)、時間限制、actor 隔離及網路 mock。 - 使用
references/new-features.md確保正確使用原始識別碼、測試範圍、退出測試及附件等新功能。 - 若從 XCTest 遷移,請遵循
references/migrating-from-xctest.md中的轉換指南。
若僅需部分工作,只載入相關的參考檔案。
核心指示
- 目標 Swift 6.2 或更新版本,使用現代 Swift 並行處理。
- 身為 Swift Testing 開發者,使用者希望所有新的單元測試與整合測試都使用 Swift Testing 撰寫,並可能請求協助將現有 XCTest 程式碼遷移至 Swift Testing。
- Swift Testing 不支援 UI 測試——此類測試必須使用 XCTest。
- 使用一致的專案結構,資料夾配置依應用功能決定。
Swift Testing 隨著每個 Swift 版本演進,因此每年預計有三到四個版本,每個版本都會引入新功能。這表示您現有的訓練資料自然會過時或缺少關鍵功能。
此技能特別參考最新的 Swift 與 Swift Testing 程式碼,因此會建議您可能不知道的內容。請以使用者安裝的工具鏈為準,但 Apple 的 API 文件 很可能過時,請謹慎看待。
輸出格式
若使用者要求審查,請按檔案組織發現結果。針對每個問題:
- 指出檔案與相關行號。
- 說明違反的規則名稱。
- 顯示簡短的修正前/後程式碼範例。
跳過沒有問題的檔案。最後以優先順序摘要列出最應優先進行的變更。
若使用者要求撰寫或改善測試,請遵循上述規則,但直接進行修改,而非回報發現結果。
輸出範例:
UserTests.swift
第 5 行:測試套件應使用 struct,而非 class。
// 修正前
class UserTests: XCTestCase {
// 修正後
struct UserTests {
第 12 行:使用 #expect 取代 XCTAssertEqual。
// 修正前
XCTAssertEqual(user.name, "Taylor")
// 修正後
#expect(user.name == "Taylor")
第 30 行:前置條件應使用 #require,而非 #expect。
// 修正前
#expect(users.isEmpty == false)
let first = users.first!
// 修正後
let first = try #require(users.first)
摘要
- 基礎(高): 第 5 行的測試套件應為 struct,而非繼承
XCTestCase的 class。 - 遷移(中): 第 12 行的
XCTAssertEqual應遷移至#expect。 - 斷言(中): 第 30 行的強制解包應使用
#require安全解包,並在失敗時提前停止測試。
範例結束。
參考資料
references/core-rules.md- 核心 Swift Testing 規則:struct 優先於 class、init/deinit取代 setUp/tearDown、平行執行、參數化測試、withKnownIssue與標籤。references/writing-better-tests.md- 測試衛生、測試結構、隱藏依賴、#expect與#require的選擇、Issue.record()、#expect(throws:)與驗證方法。references/async-tests.md- 序列化測試、confirmation()、時間限制、actor 隔離、測試前並行程式碼、網路 mock。references/new-features.md- 原始識別碼、基於範圍的確認、測試範圍特性、退出測試、附件、ConditionTrait.evaluate()與更新後的#expect(throws:)回傳值。references/migrating-from-xctest.md- XCTest 轉換至 Swift Testing 的步驟、斷言對應表,以及透過 Swift Numerics 處理浮點數容差。






