XCTest を Swift テストに移行 ノート

XCTest を Swift テストに移行

スウィフト・テストは、AppleがWWDC24で導入し、Xcode 16に同梱されたオープンソースのテスト・フレームワークです。スウィフトのモダンな機能 seperti 並行処理やマクロを使用し、AppleのプラットフォームだけでなくWindowsやLinuxもサポートしています。XCTestから移行する緊急の理由はないが、スウィフト・テストはいくつかの利点を提供します。例えば、スウィフト・コンカレンシーを使用して物理デバイス上で並列テストを実行することができます。スウィフト・テストを始めるには、テスト・ターゲット内でXCTestとスウィフト・テストのユニット・テストを混在させることができますが、テスト・フレームワークを混在させることは避けるべきです。テスト・ファイルに「import Testing」を追加することで、スウィフト・テスト・フレームワークをインポートできます。Appleは、テストをグループ化するために、構造体やクラスにテストを追加し、init メソッドを使用してセットアップとティアダウンを行うことを推奨しています。スウィフト・テストのテストは、@Test マクロを追加することで通常のスウィフト・メソッドがユニット・テストになるものです。テスト・メソッドにはasyncやthrowsをマークすることができ、必要に応じてアクターに分離することもできます。@Test 属性は、マクロであり、実装を見ることができます。スウィフト・テストでは、#expect と #require マクロをアサーションに使用し、XCTestのXCTAssertよりも柔軟性と情報の多いエラーメッセージを提供します。#expect マクロは、失敗した期待をログに記録し、テストを継続します。一方、#require マクロは、エラーが発生するとテストの実行を停止するthrowing バージョンです。また、Issue.record を使用して、条件を評価せずにテストに失敗することもできます。これは、XCTestのXCTFailと似ています。全体的に、スウィフト・テストはXCTestよりも並行処理のサポートやアサーションの柔軟性が向上しています。