iOS

Configurationごとにアプリ名を変えた時に、UnitTestのtestableのModule名を共通の名前で使用できるようにする

Configurationごとにアプリ名を変えた時に、UnitTestのtestableのModule名を共通の名前で使用できるようにする

本日作業していたら、久々のタイトルのエラーが出たので、備忘録のために対応方法をメモしておきます!

以下の記事でもやったように、XcodeのプロジェクトでSchemeConfigurationの設定を変更して、サーバーの接続先ごとのアプリを作ったり、Test用のConfigurationを作ったりして、それぞれのアプリごとに名前を変更したりした後に、UnitTestを実行すると、@testable import HomeNoteのようにテストコードで書いている箇所でエラーが出ます。

iOSのUnitTestでCould not find test host for ~のエラーが出た時の対処法iOSのUnitTestでCould not find test host for ~のエラーが出た時の対処法をまとめました...

そのエラーでは、ビルドするConfigurationごとの名前のModule名を使用するように怒られていると思います。
しかしその通りにすると、以下のように書かないといけなくなると思います。

import XCTest
#if DEVELOP_DEBUG
@testable import HomeNote
#elseif DEVELOP_TEST
@testable import HomeNote-DT
...
#endif

このように各テストのファイルで書くのは現実的ではありません。
そこで、共通して@testable import HomeNoteのように書けるようにしましょう。

そのためには、以下の箇所のPRODUCT MODULE NAMEの設定を変更します。

  1. アプリの用のTarget -> Build Settingsを選択する
  2. PRODUCT MODULE NAMEと検索する

そこでおそらく各Configurationごとに別の名前が設定されていると思います。
これをTargetと同じ名前に設定します。
実際は、$(TARGET_NAME)の値を設定することで、実現できると思います。

これで以下のように、アプリのTarget名でimportできるようになります!

import XCTest
@testable import HomeNote
+2

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA