Swift Testing Pro

作者 twostraws2d6bba14a3c8MIT450 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫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 程式碼。

功能
此技能引導代理撰寫與審查 Swift Testing 程式碼,著重正確性、現代 API 用法與專案慣例。它依結構化流程檢查核心規則、測試結構與斷言、非同步測試、較新功能,以及從 XCTest 移轉。審查結果依檔案列出,包含行號、違反的規則與修改前後的程式碼範例,最後提供依優先順序排列的總結;若被要求撰寫或改進測試,則直接進行修改。
適用情境
適用於閱讀、撰寫或審查使用 Swift Testing 的 Swift 專案,包括將現有 XCTest 程式碼移轉過來。它針對 Swift 6.2 或更新版本的單元測試與整合測試;UI 測試仍使用 XCTest。
執行需求
不需要指令碼,僅包含說明與參考文件。它假定使用 Swift 6.2 或更新版本的工具鏈,並以使用者已安裝的工具鏈為準。

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 references/core-rules.md.
  2. Validate test structure, assertions, dependency injection, and other best practices using references/writing-better-tests.md.
  3. Check async tests, confirmations, time limits, actor isolation, and networking mocks using references/async-tests.md.
  4. Ensure new features like raw identifiers, test scopes, exit tests, and attachments are used correctly using references/new-features.md.
  5. If migrating from XCTest, follow the conversion guidance in 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

  • references/core-rules.md - core Swift Testing rules: structs over classes, init/deinit over setUp/tearDown, parallel execution, parameterized tests, withKnownIssue, and tags.
  • references/writing-better-tests.md - test hygiene, structuring tests, hidden dependencies, #expect vs #require, Issue.record(), #expect(throws:), and verification methods.
  • references/async-tests.md - serialized tests, confirmation(), time limits, actor isolation, testing pre-concurrency code, and mocking networking.
  • references/new-features.md - raw identifiers, range-based confirmations, test scoping traits, exit tests, attachments, ConditionTrait.evaluate(), and the updated #expect(throws:) return value.
  • 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提交2d6bba1

授權條款: MIT

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

檢舉或申請下架