swift-testing-pro について
swift-testing-proは、Swift Testingのテスト作成とレビューを支援する、Swift開発者向けのスキルです。最新API、並行処理、プロジェクト規約に重点を置き、XCTestからの移行も扱います。UIテストには引き続きXCTestを使います。
主な機能
- 01Swift Testingの規約レビュー
- 02テスト構成とアサーションの改善
- 03非同期テストとアクター分離の確認
- 04Swift Testingの新機能の適用
- 05XCTest移行のガイド
活用シーン
- 01Swift Testingテストスイートのレビュー
- 02ユニットテストと統合テストの作成
- 03XCTestからのテスト移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ twostraws/ swift-testing-agent-skill --skill swift-testing-proインストール後、Claude Code で/swift-testing-proを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.claude-plugin/plugin.jsonagents/openai.yamlassets/swift-testing-pro-icon.svgreferences/async-tests.mdcore-rules.mdmigrating-from-xctest.mdnew-features.mdwriting-better-tests.md詳細
Swift Testing のコードを作成・レビューし、正確性、モダンな API の使用、プロジェクト規約への準拠を確認します。本当の問題のみを報告し、細かな点をあげつらったり、問題をでっち上げたりしないでください。
レビュー手順:
references/core-rules.mdを参照し、テストが Swift Testing の基本規約に従っていることを確認します。references/writing-better-tests.mdを参照し、テスト構造、アサーション、依存性注入、その他のベストプラクティスを検証します。references/async-tests.mdを参照し、非同期テスト、確認、制限時間、アクター分離、ネットワークモックを確認します。references/new-features.mdを参照し、raw identifier、テストスコープ、終了テスト、添付ファイルなどの新機能が正しく使われていることを確認します。- XCTest から移行する場合は、
references/migrating-from-xctest.mdの変換ガイダンスに従います。
作業の一部のみを行う場合は、関連するリファレンスファイルだけを読み込んでください。
基本指示
- モダンな Swift の並行処理を使用し、Swift 6.2 以降を対象とします。
- Swift Testing の開発者として、ユーザーは新しいユニットテストと統合テストをすべて Swift Testing で記述することを希望しており、既存の XCTest コードを Swift Testing に移行する支援を求める場合もあります。
- Swift Testing は UI テストをサポートしていません。UI テストには XCTest を使用する必要があります。
- アプリの機能に基づいてフォルダー構成を決め、一貫性のあるプロジェクト構造にしてください。
Swift Testing は Swift の各リリースとともに進化しており、毎年 3~4 回のリリースで新機能が追加されます。そのため、既存の学習データは自然と古くなったり、重要な機能が不足したりします。
このスキルは、最新の Swift および Swift Testing のコードを特に活用しています。そのため、知らない機能が提案されることがあります。ユーザーがインストールしているツールチェーンを信頼できる情報源として扱ってください。一方、Apple の ドキュメントに記載された API 情報は古くなっている可能性がかなり高いため、慎重に扱ってください。
出力形式
ユーザーがレビューを依頼した場合は、ファイルごとに指摘を整理してください。各問題について、次の内容を示します。
- ファイル名と該当する行番号
- 違反しているルール
- 修正前と修正後の簡潔なコード例
問題のないファイルは省略してください。最後に、影響の大きい変更から順に優先順位を付けてまとめます。
ユーザーがテストの作成または改善を依頼した場合は、上記と同じルールに従い、指摘レポートを返すのではなく、直接変更を加えてください。
出力例:
UserTests.swift
5 行目:テストスイートにはクラスではなく構造体を使用します。
// Before
class UserTests: XCTestCase {
// After
struct UserTests {
12 行目:XCTAssertEqual ではなく #expect を使用します。
// Before
XCTAssertEqual(user.name, "Taylor")
// After
#expect(user.name == "Taylor")
30 行目:前提条件には #expect ではなく #require を使用します。
// Before
#expect(users.isEmpty == false)
let first = users.first!
// After
let first = try #require(users.first)
まとめ
- 基本事項(高): 5 行目のテストスイートは、
XCTestCaseを継承するクラスではなく構造体にする必要があります。 - 移行(中): 12 行目の
XCTAssertEqualを#expectに移行する必要があります。 - アサーション(中): 30 行目の強制アンラップは、安全にアンラップして失敗時にテストを早期終了する
#requireに置き換える必要があります。
例の終わり
リファレンス
references/core-rules.md- Swift Testing の基本ルール:クラスではなく構造体を使う、setUp/tearDownではなくinit/deinitを使う、並列実行、パラメーター化テスト、withKnownIssue、タグ。references/writing-better-tests.md- テストの衛生管理、テストの構成、隠れた依存関係、#expectと#requireの使い分け、Issue.record()、#expect(throws:)、検証方法。references/async-tests.md- テストの直列化、confirmation()、制限時間、アクター分離、並行処理に未対応のコードのテスト、ネットワークのモック。references/new-features.md- raw identifier、範囲ベースの確認、テストスコープの Trait、終了テスト、添付ファイル、ConditionTrait.evaluate()、更新された#expect(throws:)の戻り値。references/migrating-from-xctest.md- XCTest から Swift Testing への変換手順、アサーションの対応関係、Swift Numerics による浮動小数点数の許容誤差。