swift-testing-code-review について
Swift Testing のコードをレビューするためのスキルです。対象範囲と根拠を順に確認してから指摘を記録し、チェックリストとテストパターン別の参考資料を提供します。
主な機能
- 01対象範囲とコード要件の順次確認
- 02レビュー指摘の根拠要件
- 03アサーションとテスト構成のチェックリスト
- 04非同期・パラメータ化テストの参考資料
活用シーン
- 01Swift Testing のアサーションレビュー
- 02パラメータ化テストの挙動確認
- 03非同期テストパターンの評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill swift-testing-code-reviewインストール後、Claude Code で/swift-testing-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/async-testing.mdexpect-macro.mdorganization.mdparameterized.md詳細
Swift Testing のコードレビュー
厳守事項
Swift Testing のレビュー結果を記録する前に、順番どおりに完了してください。共通のレビュー規則には、review-verification-protocol を併用してください。
- 対象範囲: レビュー対象の
.swiftファイルのパスを明示的に一覧にするか、ユーザーが指定した単一ファイルを確認します。合格条件: 作業メモにパスが記録されていること、またはNo Swift files in scopeの1行を記して、その時点で指摘事項なしとして終了すること。 - Swift Testing の使用確認: Swift Testing のコードとして扱う各パスについて、そのファイルに
import Testingまたは@Test/#expect/#require/@Suiteがあることを確認します(ファイルを開くか検索してください)。合格条件: レビューで指摘する各ファイルに少なくとも1つ一致する項目があること、または1行の理由(例:XCTest のみ)を添えて、そのファイルを Swift Testing のレビュー対象から除外すること。 - 証拠とプロトコル: 問題を指摘する前に、review-verification-protocol を読み込みます。合格条件: 各指摘事項が同スキルの根拠ルールを満たしていること、また Review Checklist の項目への違反には
[FILE:LINE]形式の根拠が示されていること。問題がない場合は、レビューの概要にProtocol applied; no Swift Testing issues(または同等の表現)を記載します。
クイックリファレンス
| 問題の種類 | 参照先 |
|---|---|
| #expect と #require、式のキャプチャ、エラーのテスト | references/expect-macro.md |
| 引数付きの @Test、トレイト、zip() の落とし穴 | references/parameterized.md |
| confirmation、非同期シーケンス、完了ハンドラー | references/async-testing.md |
| @Suite、タグ、並列実行、.serialized | references/organization.md |
レビューチェックリスト
-
#expectに式を直接埋め込んでいる(事前に計算したブール値ではない) -
#requireは前提条件にのみ使用し、アサーションには#expectを使用している - エラーのテストで具体的な型を確認している(一般的な
(any Error).selfではない) - ペアを使うパラメータ化テストでは、直積ではなく
zip()を使用している - パラメータ化テストの期待値に、実装のロジックをそのまま反映していない
- 非同期シーケンスを
confirmation(expectedCount:)でテストしている - 完了ハンドラーには
confirmationではなくwithCheckedContinuationを使用している -
.serializedは必要な箇所(共有リソースがある場合)にのみ適用している - 相互排他的な兄弟の直列化スイートを、親スイートの下にネストしている
-
@Test関数間で状態が保持されると想定していない - 無効化したテストに説明とバグへのリンクがある
リファレンスを読み込むタイミング
- #expect または #require の使い方をレビューする場合 → expect-macro.md
- 引数またはトレイト付きの @Test をレビューする場合 → parameterized.md
- confirmation または非同期テストをレビューする場合 → async-testing.md
- @Suite またはテストの構成をレビューする場合 → organization.md
レビューの質問
#expect内の事前計算したブール値によって、診断に必要なコンテキストが失われる可能性はありませんか?#requireによってテストが早期に停止し、すべての失敗を明らかにできなくなっていませんか?- 複数の引数を使うパラメータ化テストで、意図しない直積が発生していませんか?
- 配列の長さが異なるために、
zip()がテストケースを気付かないうちに切り捨てる可能性はありませんか? - 完了ハンドラーを
confirmationで誤ってテストしていませんか?
コメント
Markdown 対応