近年のSwift言語やXcodeの進化に伴い、従来のXCTestに代わるモダンなテストフレームワーク「Swift Testing」が注目されています。本セッションでは、ココナラiOSチームが実際にXCTestからSwift Testingへ移行した事例をもとに、導入の背景や具体的な手法をご紹介します。
まず、なぜ移行を決断したのか。急速に機能が増える中で、XCTestでは「テストが仕様書として機能しない」「分岐の多いテストはボイラープレートが増える」「テストケースに依存したセットアップが煩雑化」などの課題が浮き彫りにしたいと思います。
特にViewModelのテストにおいては、BDD(Given‑When‑Then)スタイルで記述できる点が大きな魅力です。
続いて、Swift Testingの特徴とメリットについて。マクロベースで直感的な構文や、型安全かつ並列実行対応、パラメタライズテストやtrait機能(OSや時間帯によってテストを制御)など、XCTestよりも柔軟で表現力豊かなテストが可能になります
ココナラでの具体的な移行ポイントは以下の4つ
setUp()に頼らず、各テスト内でViewModelやMockを初期化
@Suiteを使って条件ごとにネスト構造を整理
@Testやメソッド名を日本語で書き、仕様の可読性を重視
複数分岐のテストは@Suite内の独立した@Testで構造化
そして、パラメタライズテストにも対応可能ですが、ViewModelのようにロジックが複雑なケースでは適切でない場合もあるため、要件に応じて使い分けています。
最後に、実際のコード例(XCTest→Swift Testing両対応)や、BDDコードが「仕様書としても読める」利点をお見せしつつ、フレームワーク選定・チーム規約への組み込みなど実務ベースでの導入ノウハウを共有します