23

XCode アプリケーションでクラスのロジック ユニット テストを作成したいと考えています。Xcode 4 では、Project Navigator でプロジェクト名をクリックし、下部から [Add Target] をクリックしました。Other で「Cocoa Touch Unit Testing Bundle」を選択し、新しいターゲットに「tests」という「product name」を付けて終了します。

テストしたいクラスは既存のアプリケーション ターゲットの一部としてコンパイルされるため、新しい「テスト」ターゲットについては、すぐに [ビルド フェーズ] タブに移動し、既存のアプリケーション ターゲットを唯一のターゲット依存関係として追加します。

次に、作成した tests.m ファイルに移動し、テストしたいクラスをインポートします (その下にReleasePlanManagerあり、そのメソッドの 1 つを呼び出します。しかし、リンカーは次のようなエラーで失敗します。

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_ReleasePlanManager", referenced from:
      objc-class-ref in tests.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

したがって、(私の理解では)アプリケーションターゲット(それが含まれている)を追加するだけで十分なはずですが、クラスが見つかりませんか?

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

33

テスト バンドルには追加の設定が必要です。

  • Bundle Loader$(BUILT_PRODUCTS_DIR)/AppName.app/AppName(両方の場所の AppName をアプリの名前に置き換えます) に設定します。
  • テストホスト$(BUNDLE_LOADER)

(プロジェクトをゼロから作成して単体テストを有効にする場合、これらは自動的にセットアップされます。ただし、単体テスト バンドルを既存のプロジェクトに追加する場合は、セットアップされません。)

于 2011-09-03T03:59:36.820 に答える