開発環境
Xcode 15.4
Swift 5.10
話の概要
iOS のプロジェクトを作成するとき、"Include Test" を選択すると、自動的に Test Plans が作成されます。
スキーママネージャを確認すると、次のように表示されます。
[プロジェクト名](Autocreated)
しかし、このスキーマを削除した場合、Test Plans を手動で作成する必要があります。そのため、作成した Test Plans ファイルをプロジェクト内に配置する必要があります。
Test Plans とは
Xcode 11 から追加されたテストに関する機能です。
Test Plan を利用すると、さまざまなテストの設定を1つのJSONファイル(.xctestplan
)に書いておき、実行時にまとめて実行することができる優れものです。
今回やったこと
誤ってスキーマを削除してしまったため、手動で Test Plans を作成することになりました。
しかし、新しいファイルを作成するのは避けたかったので、自動的に作成された Test Plans と同様にプロジェクトファイルを編集する方法を選びました。
今回はその知見を共有します。
設定ファイルの場所
自動生成されたテストプランは、.xcodeproj/xcschemes/[プロジェクト名].xcscheme
に保存されています。
この中の <TestAction>
セクションに記述する必要があります
AutocreateTestPlan の追記
<TestAction>
セクション内に shouldAutocreateTestPlane
の設定がない場合、以下のように追記します。
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
+ shouldAutocreateTestPlan = "YES">
これにより、スキーマ名が
[プロジェクト名](Autocreated)
の (Autocreated)
部分に反映されます。
ビルド対象の設定
ユニットテスト、UIテストを実行するように設定するため、以下のように設定します。
ユニットテストおよび UI テストを実行するように設定するため、以下のように <Testables>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "3F91F191F191F191F191F1"
BuildableName = "[プロジェクト名]Tests.xctest"
BlueprintName = "[プロジェクト名]Tests"
ReferencedContainer = "container:[プロジェクト名].xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "3F91F1762BBA1762BBA1762BBA"
BuildableName = "[プロジェクト名]UITests.xctest"
BlueprintName = "[プロジェクト名]UITests"
ReferencedContainer = "container:[プロジェクト名].xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
BlueprintIdentifier
はユニットテスト、UIテストで異なるので注意してください。
参考資料