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/