iOSのUnitTestでCould not find test host for ~のエラーが出た時の対処法
本日作業していたら、久々のタイトルのエラーが出たので、備忘録のために対応方法をメモしておきます!
おそらくこのエラーが出るのは、XcodeのプロジェクトでSchemeやConfigurationの設定を変更して、サーバーの接続先ごとのアプリを作ったり、Test用のConfigurationを作ったりして、それぞれのアプリごとに名前を変更したりした後に、UnitTestを実行するような時に発生するかなと思います。
このエラーを直すためには、UnitTestのTargetのTest Hostの設定を変更する必要があります。
↓の写真はXcodeのプロジェクトの画面のサンプルですが、以下の手順で該当の設定を開きます
UnitTest用のTarget->Build Settingsを選択するTest Hostと検索する

そしてここで上記の写真のように、各ConfigurationごとにProductNameを変更する必要があります。
上記のサンプルアプリでは、以下のようにProductNameの後ろに各Configurationのsuffixをつけるようにしています。
自分はsuffixにConfigurationの略称をつけているので、-DDなどをつけるようにしています。
修正前: $(BUILT_PRODUCTS_DIR)/HomeNote.app/HomeNote
修正後: $(BUILT_PRODUCTS_DIR)/HomeNote-DD.app/HomeNote-DD
ちなみに各Configurationごとの値を直接編集してもいいのですが、アプリの他の設定項目でも使用するので、1カ所変更すると、他の箇所も変更しなければいけません。
なので自分の場合は、各Configurationファイルに以下のようにsuffix用の変数を設定し、$(TARGET_NAME)$(PRODUCT_NAME_SUFFIX)という形で一括で設定できるようにしています。
PRODUCT_NAME_SUFFIX = -DD参考情報
- http://harumi.sakura.ne.jp/wordpress/2019/06/27/test_host%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E6%B6%88%E3%81%99/