TDDでiPhone開発

最近また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使えない!使いにくい!

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

前の記事

iPad開発環境構築

次の記事

身近な幸せのための20%ルール