2013-07-15 3 views
6

現在のスキームに基づいてテストホスト/バンドルローダーを動的にするにはどうすればよいですか?今値に設定されていますiOSユニットテスト用の動的 "テストホスト"またはバンドルローダー?

$(BUILT_PRODUCTS_DIR)/MyApp1.app/MyApp1 

問題は、私はワークスペースに4つのアプリがあると私はそれらのすべてに同じユニットテストスイートを使用したいです。現在のスキームに基づいて「MyApp1」の部分を動的に変更するにはどうすればよいですか?それはビルド中の環境変数ですか?私は$(PROJECT_NAME)のようなものに設定しようとしましたが、それらはテストスイートの名前を取得するようです。

+0

私は同じ問題に直面しています。私は同じターゲットテストを実行したいいくつかのターゲットを持っています。明らかに、あまりにもあまりにもXcodeを扱う。私の解決策は、XCodeProjectを変更して適切なアプリケーションをターゲットにするためのスクリプトを追加することでした。 –

答えて

7

これを行うには、ビルド設定内に変数を入れる必要があります。これは簡単なようですが、そうではありません。環境変数をアプリケーションまたはテスト・スキームのPre-またはPost-ステップで設定すると、ここで選択されたかのようには見えません。結局のところ、ビルドの設定はビルドの前に行われます。プリプロセッサマクロも同様ですが、xcodebuildを使ってこれを行い、カスタムオプションを渡すこともできます。

私がこれを行うために知っている唯一の方法は、xcconfigファイルを使用することです。 1つを作成し、テストターゲットに(少なくとも)適用します。動作します $(BUILT_PRODUCTS_DIR)/$(THINGUNDERTEST).app/$(THINGUNDERTEST)

:へのあなたのプロジェクト設定で今すぐ THINGUNDERTEST=FooBar

、天気をxcconfigまたはプロジェクトファイルで、設定BUNDLER_LOADER:内容は次のようなものを含める必要があります。これで、THINGUNDERTESTをさまざまな方法で変更し、少なくとも動的な動作を得ることができます。これは、あなたのニーズに応じて、あなたのために働くかもしれないし、できないかもしれませんが、おそらく出発点にすぎません。

+0

私の場合、テスト対象にはホストアプリケーションが必要です。したがって、 'BUNDLER_LOADER'は' TEST_HOST'から値を読み込みます。ですから、 '$(BUILT_PRODUCTS_DIR)/ $(THINGUNDERTEST).app/$(THINGUNDERTEST)'を 'TEST_HOST'に設定しました。 – Hlung

+0

これは実際に動作します。私の場合は、動的に解決された '' 'THINGUNDERTEST'''の値をxctoolのコマンドライン引数としてアプリに送りました。 xcodebuildも同様です。例えば。 '' 'xcodebuild THINUNDERTEST = MyAppテスト' '' –

関連する問題