TEST_HOSTのエラーを消す

はじめに

SchemeごとにProduct Nameを変更するとビルドは正常に通りますがテストが通らなくなり、以下の様なワーニングが表示されます

Could not find test host for NameChangeTests: TEST_HOST evaluates to "/Users/harumi_sagawa/Library/Developer/Xcode/DerivedData/NameChange-cvxcuyplnlbfqfewpeylspyapson/Build/Products/Debug-iphoneos/NameChange.app/NameChange"

直し方

このエラーの原因はTEST_HOSTの指定が間違っていることです。

UnitTestのTargetを選択してTEST_HOSTと検索を行います。画像を見ると分かる様にDebugに変更したはずの名前が適応されておらずプロジェクト名が変更前のものになってしまっています。

ここを変更したProduct Name(今回はDebug)に変更すればビルドが通る様になります。

修正前

$(BUILT_PRODUCTS_DIR)/NameChange.app/NameChange

修正後

.appの部分も直さないと動かないので注意が必要です。

$(BUILT_PRODUCTS_DIR)/Debug.app/Debug

@testable importのエラー

これで終わりではなくUnitTestの@testable importを行っていた部分にNo such moduleというエラーが出力されてしまいます。

これはデバッグ用のSchemeをプリプロセッサで囲んでimportしてあげれば消えます。

#if DEBUG
@testable import Debug
#endif

参考文献

Tests stop working under xcode 8 TEST_HOST error