Objective-CなどiOS関連の技術メモ。知識はここに投げ捨てて忘れる。

ユニットテストで [NSBundle mainBundle]

最終更新日 2013年07月21日 12:43

ユニットテストでは [NSBundle mainBundle] はリソースファイルなどが置かれているアプリケーションのディレクトリを返してくれない。Appleのドキュメントによると、

Returns the NSBundle object that corresponds to the directory where the current application executable is located.

現在のアプリケーション実行ファイルが置かれているディレクトリに対応したNSBundleオブジェクトを返す。

ということで、Xcodeインストールディレクトリ内にある、テストランナー的なプログラムが置かれている場所を返している模様。

テスト実行中にリソースを読み込みたいときは [NSBundle bundleForClass] を使う。たとえば、テストケースクラス内で次のように書く。

これで、テストケースクラスが置かれている場所を示すNSBundleを手に入れることができる。

詳解 Objective-C 2.0 第3版

必読。こんなゴミサイトより、こっちを読むべき。

Amazonでみる

iPhoneプログラミングUIKit詳解リファレンス

必読。こんなゴミサイトより、こっちを読むべき。

Amazonでみる