2017-02-14 12 views
5

ユニットを実行しているときにアプリケーションホストとして使用しようとする前に、メインアプリケーションターゲットをコンパイルして製品を生成したくないXcodeプロジェクトがありますテスト。 Xcodeから、⌘ + Uで単体テストを実行しようとしています。 "/Users/***/Library/Developer/Xcode/DerivedData/Lowes-aymgdtrbrarmcidtkxoqxeafmxmj/Build/Products/Debug-iphonesimulator/[app name]" : は Could not determine bundle identifier for [app name] TEST_HOST Xcode 8ユニットテストエラー:TEST_HOSTのバンドル識別子を特定できません

は、このダイアログはまた、私の地元の派生データ製品ディレクトリへのパスが含まれて(実際のアプリケーション名の[アプリケーション名]を置き換えます):私はすぐに述べてダイアログを取得

ユニットテストは、TEST_HOST設定が$(BUILT_PRODUCTS_DIR)/[app name].app/[app name]を指しているように設定されています。ユニットテストターゲットは、メインのアプリターゲットにターゲット依存関係があります。 BUNDLE_LOADER設定は$(TEST_HOST)に設定されています。 ⌘ + Bで最初にメインのアプリケーションターゲットをコンパイルすると、正しいディレクトリ構造とアプリケーションが作成され、⌘ + Uブートストラップが実行され、ユニットテストが正しく実行されます。私がきれいにして、もう一度やり直すとすぐに失敗します。私はこれまでにこの問題に遭遇したことはなく、アプリがSwift 3に変換された後に発生したように見えます。これは問題に関係しているかもしれません。

ここでいくつかの解答を読み、多くの提案を試みましたが、私と同じ根本的な問題はないようです。ほとんどの人にとっては、ホストアプリケーションをNoneに設定し、メインターゲットに戻って問題を解決しているようです。これは私には当てはまりません。

私は新鮮なチェックアウト、スウィフト3にアプリやテストの目標を再変換し、また、標準クリーン/クリーンビルドフォルダを試してみた/派生データを拭きます。これらのどれも効果がないようです。

誰もがこの問題を経験して解決策を見つけましたか?

+0

変換する前にバージョンをチェックアウトし、プロジェクトと派生データをクリーンアップし、ビルドして、再度変換し、プロジェクト&派生データをクリーンアップし、ビルドしてください。 – shallowThought

+0

ええ、トラブルシューティングの一環としてこれらの手順をすべて実行しました。今のところ、Xcodeは最初にアプリターゲットを構築することを拒否しているようです。 –

+0

あなたの質問をあなたの新しい発見の詳細で更新するかもしれません。私はあなたのコメントでこの問題を理解していませんでした。「Xcodeがアプリのターゲットを最初に構築することを拒否したようです。変換の前にコミットを作成しませんか? – shallowThought

答えて

12

を解決するだろう。すべてのシナリオに適用されるわけではありませんが、それは私の問題を解決しました。 Infoタブのメインプロジェクト設定には、コマンドラインビルドを開始するときに実行する設定を選択するオプションがあります。鉱山は解放に設定されました。これをDebugに反転すると問題が解決しました。

Xcode Project Settings, Info Tab

+1

もう1つの解決策は、リリース構成で「バンドルローダー」を設定することです。 –

+0

これは私にとってそれを修正しました。また、私はリリースに戻したときにも動作し続けました。 –

+1

@DanielLahyaniあなたの解決策は正しいと思いますが、理由を説明できますか?どうもありがとう –

0

テスト対象のBuild Settingsから完全にTest Hostを削除すると、私は、このための解決を見つけ、この問題に

+0

この手順を試しましたが、私はこの質問で経験した問題に何の影響も与えませんでした。 –

+0

おそらく、 "Bundle Loader"の値を削除すると "Test Host"が実際に '$(BUNDLE_LOADER)'に設定されていると思います(これはデフォルト値です)。 –

0

リリース構成で「バンドルローダー」を設定しても問題が解決しているようです。

なぜ私にとってこのエラーは、私たちがコマンドラインからビルドを実行する私たちのCIシステムにはいつも現れているのか分かりません。プロジェクト設定では、コマンドラインビルドに「リリースを使用」を設定しています。したがって、ビルド構成をコマンドライン引数でDebugに設定しても、xcodebuildは構成引数を無視していて、部分的には "Release"設定を使用していると思います。これはおそらくxcodebuildシステムのバグです(私はレーダーの価値があると思います)。もしこれがなぜ私がそれについて知りたいバグを解決するのか、より良い説明が見つかるかもしれません。

これが役に立ちます。

関連する問題