6

単体テストのために、すべてのリリース アプリケーション ファイルと、UI 単体テストに役立つコードを含むいくつかの追加ファイルを含む iPhone プロジェクト ターゲットを Xcode で作成したいと思います。

これを行うには、元のアプリケーション ターゲットを複製します。ただし、これの問題は、アプリ ターゲットに新しいソース ファイルを追加するたびに、それを UnitTestUI ターゲットにも追加する必要があることです。大したことではありませんが、両方のターゲットにファイルを追加することを常に覚えておくのは不便です。

元のアプリ ターゲットに追加されたすべてのファイルが単体テスト ターゲットにも自動的に追加されるように、依存関係を設定する方法はありますか?

4

3 に答える 3

4

Xcode では、相互に直接依存するターゲットを作成できます。セットアップがどれほど単純か複雑かに応じて、新しいターゲットを追加するときに、その他のカテゴリでこれを支援できる製品ビルド以外のターゲットがいくつかあります。メイン プロジェクト ターゲットに直接依存する単体テストを実行するための特定のターゲットを作成することは非常に一般的であり、Apple および多くのブログで文書化されています。

ただし、あなたの状況では、新しい UI テスト ターゲットで多くの微調整を行う必要があるかもしれませんが、セットアップが完了すると、保守が非常に簡単になります。正確な状況がわからないため、段階的な回答を提供することはできませんが、一般的なガイドラインは次のとおりです (状況に合わせて微調整してください)。

  1. ほとんどの設定は同じであるため、元のターゲットのコピーを作成します。
  2. 新しいターゲットを選択し、インスペクターを開きます (⌘I)
  3. Direct Dependenciesの下で、+ ボタンをクリックし、メイン ターゲットを選択します。
  4. 追加のドキュメント/ソース/ルールなどを使用して、必要に応じて新しいターゲットを設定します。

ドラッグ アンド ドロップしたい場合は、元のターゲットを ([ターゲット] 開閉用三角形の下から) 新しいターゲットにドラッグすることもできます。これにより、依存関係が自動的に設定されます。

ここで、テスト ターゲットをアクティブ ターゲットとして選択すると、常にそれらのルールでビルドされます。また、メイン ターゲットでソースを追加/変更すると、テスト ターゲットのビルド時に適切に再ビルドされます。テスト ターゲットにもソース ファイルを追加することを忘れないでください。時間をかけてさまざまな Xcode のドキュメントを読み、利用可能な多くのターゲット テンプレートを試してみることをお勧めします。長期的には、製品をより効率的に使用するのに役立ちます。非常に大規模または複雑なプロジェクトであっても、方法を知っていれば、Xcode でかなり簡単に実行できる気の利いたことがたくさんあります。

于 2009-01-05T09:59:09.437 に答える
0

アプリと単体テストの両方のターゲットにリンクされている静的ライブラリとして、ほとんどのアプリケーションをビルドすることで問題を解決しました。

私のプロジェクトのターゲットは次のようになります。

  • libMyApp
    • .m ファイルをコンパイルする
  • MyApp.app
    • libMyApp (依存関係)
    • ライブラリとのリンク: libMyApp.a
  • UITest.app
    • libMyApp (依存関係)
    • ライブラリとのリンク: libMyApp.a

このようにして、.mファイルを「libMyApp」ターゲットにのみ追加し、アプリとテストの両方で使用できるようにすることができ、再コンパイルする必要さえありません。

唯一の落とし穴は、静的ライブラリが Objective-C カテゴリをサポートしていないように見えることです。そのため、各ターゲットに個別に追加する必要があります。

于 2010-12-09T18:36:41.107 に答える
0

いいえ、ありません。Unit Test ターゲットにすべてのファイルが必要な特定の理由はありますか? これには、main.m と、テストしていないすべてのクラス (ビュー クラスなど) が含まれます。実際、単体テストに main.m が含まれている場合、単体テストはどのように適切に実行されるのでしょうか?

于 2009-01-05T02:02:49.617 に答える