"Include Unit Tests"をチェックし忘れたプロジェクトにUnitTestの設定をする
Xcodeをプロジェクト作成時に"Include Unit Tests"のチェックをしないで、
後からユニットテストをしたくなることがあったので調べてみました。
自分でちょこっといじくってみて、とりあえずできそうだったのでメモ。
漏れや間違いがありましたら、ご指摘いただけるとありがたいです。
バージョン
Xcode4.3.3
「Cocoa Touch Unit Testing Bundle」を選択します。
「Product Name」は"[プロジェクト名]Tests"などにします。
UnitTest用のTargetが追加されました。「Link Binary With Libraries」でSenTestingKit.frameworkが赤くなっていても
動くっぽいですが、気持ちが悪いので削除して追加し直します。
ただこの状態だとSchemeが分かれてしまっています。切り替えながら使えばいいのかもしれませんが、
元からあったSchemeでUnitTestを実行できるようにしたほうが便利そうです。
"UnitTestSample2"のほうで「Edit Scheme」を選択し、「Test」の項目に新しいTargetを追加します。
テストTargetの方の「Build Settings」ー「Bundle Loader」に"${BUILT_PRODUCTS_DIR}/アプリ名.app/アプリ名"を指定
「Test Host」に"${BUNDLE_LOADER}"を設定します。
ここまでで、少なくともロジックのテストはできるようになったかと思います。
アプリケーションテストを行うための設定については、必要になった時に調べたいと思います。
ちなみにTestを実行した時にEXC_BAD_ACCESSが発生した場合は、"Edit Scheme"のDebuggerをLLDP→GDBにするといいみたいです。
このへんはよくわからないです。。。
iphone - UnitTesting a CocoaTouch Static Library in Xcode 4.3 fails with EXC_BAD_ACCESS at 0x0 - Stack Overflow
2012/07/25 追記
「Build Settings」への設定が抜けていたので追記しました