TDDでiPhone開発

2010-06-04
2011-01-08
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

最近またiPhone開発のコードをいじり始めたので、遅ればせながらObjective-Cでユニットテストする環境を整えた。
以下がよくまとまっていて参考になりました。感謝。

ユニットテスト用のターゲットを作り、テストに関連するクラスやライブラリをターゲットに含める。

  • テストコード
  • テスト対象のクラス
  • テスト対象のクラスが利用しているライブラリやフレームワーク

あとはビルド時にテストを実行して、アサーションが転けるとコンパイルエラーのごとくエラーとして表示する。
今のところNSLogもデバッガも使えず、表示も見づらいので使いやすいとは言えないが、とりあえずテストが実行できるようにはなった。

その他メモ

リソースパスの問題

SQLiteを使ったテストが動かなかったりしたので原因を探ったら、NSBundleを使って取得していたリソースパスが何か全く別の場所を指していた。
どうもテスト用にリソースパスを取ってくるには別の書き方をしないといけないらしい。

iPhone - Retrieving Resources for logical unit tests - Stack Overflow

これはかなりハマった。

その他のテスティングフレームワーク

標準で用意されているOCUnitの他にも他にもいろいろなテスティングフレームワークがある。
実機で動かすタイプのiUnitTestとか。

しかしそれだとLogic testsにあたる部分がめんどくさすぎるような気がするのだが、どうなのだろう。(このあたり使ってみてないので外してるかもしれないが)
あとSDKのバージョンアップで使えなくなったりしないのか不安があるということもあり、無難に標準のOCUnitを使うことにしたという話。

2010/06/28追記

OCUnit使えない!使いにくい!

しばらく使ってみてそんな結論に。
でも代わりも見つからない。どうしたらいいんでしょうか。

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。