特定のシナリオ用に単体テストをセットアップするのに問題がある。これが私が試していることです:
Xcode 4.5 で、シンプルな OSX "Command Line Tool"アプリケーション プロジェクト (Foundation) を作成しました。
Xcodeには、ユニット テストを「コマンド ライン ツール」プロジェクトに自動的に追加するオプションが用意されていないことに注意してください。そこにはありません:-/私のプロジェクトでは、テストしたい簡単なサンプル クラスを作成しました。例えば「形」。
Apple のXcode Unit Testing Guide for Setup Unit-Testing in a Projectの指示に従いました。
プロジェクトに単体テスト ターゲットを追加しました。
「テスト」スキームを編集して、新しいターゲットでテストを実行しました。
テスト プロジェクトの実装 (.m) ファイル
Shape.h
で、メソッドにインポートとコードを追加しsetUp()
て、形状をインスタンス化し、それをインスタンス変数に割り当てました。
その時点で、物事がビルドされるかどうか、およびデフォルトのテストが引き続き実行されるかどうかを確認することにしました。しかし、メニューからProduct...Testを選択すると、次のエラーでビルドが失敗しました。
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Shape", referenced from:
objc-class-ref in ExampleTests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
このエラーの解釈は問題ではありません。単体テストのターゲットが、Shape の実装を含むバイナリにリンクされていないことがわかりました。ただし、私は (まだ) Xcode 単体テストとターゲット構成を理解していません。そう:
コマンド ライン ツールの結果の出力にリンクするテスト ターゲットを取得するには、何をする必要がありますか? 単体テスト ターゲットからコマンドライン実行可能ファイルにリンクできますか? Apple のドキュメントは、通常の OSX アプリケーション ( *.app
) と iOS アプリケーションに固有のように見えますが、これはどちらでもありません。
コマンド ライン ツール設定で (最初に) 開発したいビジネス ロジック クラスがあるので、「コマンド ライン ツール」で単体テスト ターゲットを実行するために必要なことを理解したい「プロジェクトの種類。 ありがとうございました!
(psコマンドラインから単体テストを実行することに興味がないことに注意してください–スタックオーバーフローは、その方法について「同様の」質問をすでに提案しています–むしろ、「コマンドラインツール」タイプのプロジェクトで単体テストを実行し、それでもXcode 内から。)