GHUnitの使い方(Xcode4)

http://blog.xebia.com/2011/03/ios-xcode-4-ghunit-mobile-tddcontinuous-testing-part-2-of-n/
このページに詳しく書いてある。
このとおりにやったら動いた。
このページは英語なので、日本語でやったことを羅列する。
(リンク先の写真を見ながら進めると分かりやすい)


GHUnitをダウンロードする。
https://github.com/gabriel/gh-unit
GHUnitIOS-0.4.28.zip
解凍すると、GHUnitIOS.frameworkが出来上がる。


AddTargetでViewBasedTargetを作る。
include Unit Testsはチェックしない。
名前はTests。


プロジェクトツリーの一番上、青いアイコンでプロジェクトの名前が書いてあるセルをクリックすると、プロジェクトの設定画面が表示される。
左のTARGETSでTestsを選択して、Build Phasesタブを選択。
Link Binary With Librariesの+を押して、Add Other... GHUnitIOS.frameworkを追加する。
プロジェクトツリーに追加されるが、変なところに置かれるので、Frameworksフォルダに入れてあげる。


TARGETSでTestsを選択して、Build Settingsタブ、Allを選択してother linkerで検索をかける。
Other Linker Flagsに

  • ObjC -all_load

を追加。


Testsフォルダのいらないファイルを消す。
消した物

  • main.m
  • TestsAppDelegate.[hm]
  • MainWindow.xib
  • TestsViewController.[hm]
  • TestsViewController.xib

Tests-Info.plistのMain nib file base nameのValueを削除


Testsターゲットに、Objective-cファイルを追加。
名前をGHUnitIOSTestMainにする。
.hファイルは即消して良い。
.mファイルに、
https://github.com/gabriel/gh-unit/blob/master/Project-IPhone/GHUnitIOSTestMain.m
のコードをコピペ。


一回実行してみる。
動くはず。


ExampleTestというObjective-Cファイルを追加。
また、.hは消して良い。
http://blog.xebia.com/2011/03/ios-xcode-4-ghunit-mobile-tddcontinuous-testing-part-2-of-n/
の15番にあるサンプルコードをコピペ。
実行すると、テストケースが動く。


テスト対象のファイルをTestsターゲットから#importしてもエラーが出る。

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

そんな時は、TARGETSのTestsを選択して、Build Phasesタブを選択、
Compile Sourcesにimportしたいファイル(.mファイルだけ)をドラッグアンドドロップ
すると、コンパイルが通るようになり、Testsターゲット内から対象ファイルをimportできるようになる。