はじめに
iOSアプリ開発において、テスト駆動開発(TDD)を採用していたり、ユニットテストを部分的に採用しているプロジェクトではユニットテストの実行速度が生産性に大きく影響します。
本記事ではHost Applicationを無効化してユニットテストの実行時間を短縮するためのTipsをご紹介します。
ユニットテストの実行プロセス
ユニットテストの主な実行プロセスは以下のようになっています。
- テストターゲットのビルド
- シミュレータ起動
- テスト対象のアプリケーションの起動
- ユニットテスト実行
テスト対象のアプリケーション起動には数十秒かかりますが、実はこのプロセスは省略することが可能です。
アプリケーションの起動プロセスを省略する
ユニットテスト時にアプリケーションの起動プロセスを省略するには
- テスト対象のコードのEmbededd Frameworkへの切り出しと
- Host Applicationの無効化
をする必要があります。
Embededd Frameworkへの切り出し方法は以下の記事が参考になるかと思います。
Host Applicationの無効化は以下のように、テストターゲット設定のGeneralタブでHost ApplicationをNoneにします。
もしもテスト対象のターゲットやテストターゲットがライブラリに依存している場合は、以下のようにBuild PhasesにCopy FilesのRun Scriptを追加し、DestinationをFrameworkとしてライブラリをコピーします。