Swift Testing Pro

twostraws/Swift-Testing-Agent-Skill/swift-testing-pro/skills/swift-testing-pro

作者 twostraws2d6bba14a3c8bf3694f218b92fffe617c41ae43eMIT452 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫4 個月前更新

Writes, reviews, and improves Swift Testing code using modern APIs and best practices. Use when reading, writing, or reviewing projects that use Swift Testing.

AI 產生的概覽

使用現代 API 與最佳實務撰寫、審查並改進 Swift Testing 程式碼。

功能
此技能引導代理依正確性、現代 API 用法與專案慣例來撰寫與審查 Swift Testing 程式碼。它透過隨附的參考檔案依序說明核心規則、測試結構與斷言、非同步測試、較新功能,以及從 XCTest 移轉。審查結果會依檔案列出違反的規則與修改前後對照,最後提供依優先順序排列的摘要;若被要求撰寫或改進測試,則直接進行修改。
適用情境
適用於閱讀、撰寫或審查使用 Swift Testing 的 Swift 專案,包括將現有 XCTest 程式碼移轉過來。也適合檢查非同步測試、確認、actor 隔離與網路模擬。
執行需求
僅提供指示,不含指令碼。依賴 references/ 下的隨附參考檔案,並以 Swift 6.2 或更新版本與現代 Swift 並行處理為目標;未提及憑證或網路存取需求。

Write and review Swift Testing code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems - do not nitpick or invent issues.

Review process:

  1. Ensure tests follow core Swift Testing conventions using ${CLAUDE_SKILL_DIR}/references/core-rules.md.
  2. Validate test structure, assertions, dependency injection, and other best practices using ${CLAUDE_SKILL_DIR}/references/writing-better-tests.md.
  3. Check async tests, confirmations, time limits, actor isolation, and networking mocks using ${CLAUDE_SKILL_DIR}/references/async-tests.md.
  4. Ensure new features like raw identifiers, test scopes, exit tests, and attachments are used correctly using ${CLAUDE_SKILL_DIR}/references/new-features.md.
  5. If migrating from XCTest, follow the conversion guidance in ${CLAUDE_SKILL_DIR}/references/migrating-from-xctest.md.

If doing partial work, load only the relevant reference files.

Core Instructions

  • Target Swift 6.2 or later, using modern Swift concurrency.
  • As a Swift Testing developer, the user wants all new unit and integration tests to be written using Swift Testing, and they may ask for help migrating existing XCTest code to Swift Testing.
  • Swift Testing does not support UI tests – XCTest must be used there.
  • Use a consistent project structure, with folder layout determined by app features.

Swift Testing evolves with each Swift release, so expect three to four releases each year, each introducing new features. This means existing training data you have will naturally be outdated or missing key features.

This skill specifically draws upon the very latest Swift and Swift Testing code, which means it will suggest things you are not aware of. Treat the user’s installed toolchain as authoritative, but there's a fairly high chance Apple's documentation about the APIs will be stale, so treat them carefully.

Output Format

If the user asks for a review, organize findings by file. For each issue:

  1. State the file and relevant line(s).
  2. Name the rule being violated.
  3. Show a brief before/after code fix.

Skip files with no issues. End with a prioritized summary of the most impactful changes to make first.

If the user asks you to write or improve tests, follow the same rules above but make the changes directly instead of returning a findings report.

Example output:

UserTests.swift

Line 5: Use struct, not class, for test suites.

swift
// Beforeclass UserTests: XCTestCase {
// Afterstruct UserTests {

Line 12: Use #expect instead of XCTAssertEqual.

swift
// BeforeXCTAssertEqual(user.name, "Taylor")
// After#expect(user.name == "Taylor")

Line 30: Use #require for preconditions, not #expect.

swift
// Before#expect(users.isEmpty == false)let first = users.first!
// Afterlet first = try #require(users.first)

Summary

  1. Fundamentals (high): Test suite on line 5 should be a struct, not a class inheriting from XCTestCase.
  2. Migration (medium): XCTAssertEqual on line 12 should be migrated to #expect.
  3. Assertions (medium): Force-unwrap on line 30 should use #require to unwrap safely and stop the test early on failure.

End of example.

References

  • ${CLAUDE_SKILL_DIR}/references/core-rules.md - core Swift Testing rules: structs over classes, init/deinit over setUp/tearDown, parallel execution, parameterized tests, withKnownIssue, and tags.
  • ${CLAUDE_SKILL_DIR}/references/writing-better-tests.md - test hygiene, structuring tests, hidden dependencies, #expect vs #require, Issue.record(), #expect(throws:), and verification methods.
  • ${CLAUDE_SKILL_DIR}/references/async-tests.md - serialized tests, confirmation(), time limits, actor isolation, testing pre-concurrency code, and mocking networking.
  • ${CLAUDE_SKILL_DIR}/references/new-features.md - raw identifiers, range-based confirmations, test scoping traits, exit tests, attachments, ConditionTrait.evaluate(), and the updated #expect(throws:) return value.
  • ${CLAUDE_SKILL_DIR}/references/migrating-from-xctest.md - XCTest-to-Swift Testing conversion steps, assertion mappings, and floating-point tolerance via Swift Numerics.

來源與署名

來源:twostraws/Swift-Testing-Agent-Skill位於swift-testing-pro/skills/swift-testing-pro提交2d6bba1

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架