TDDでiPhone開発
最近またiPhone開発のコードをいじり始めたので、遅ればせながらObjective-Cでユニットテストする環境を整えた。
以下がよくまとまっていて参考になりました。感謝。
- Unit Testing for iPhone App Development – ちくわプログラマにっき
- SenTestingKitを使ったUnitTestについてのメモ – iRSSの日記 – iPhoneアプリ開発グループ
- 人生を書き換える者すらいた。: iPhoneと単体テスト環境構築メモ
ユニットテスト用のターゲットを作り、テストに関連するクラスやライブラリをターゲットに含める。
- テストコード
- テスト対象のクラス
- テスト対象のクラスが利用しているライブラリやフレームワーク
あとはビルド時にテストを実行して、アサーションが転けるとコンパイルエラーのごとくエラーとして表示する。
今のところNSLogもデバッガも使えず、表示も見づらいので使いやすいとは言えないが、とりあえずテストが実行できるようにはなった。
その他メモ
リソースパスの問題
SQLiteを使ったテストが動かなかったりしたので原因を探ったら、NSBundleを使って取得していたリソースパスが何か全く別の場所を指していた。
どうもテスト用にリソースパスを取ってくるには別の書き方をしないといけないらしい。
iPhone – Retrieving Resources for logical unit tests – Stack Overflow
これはかなりハマった。
その他のテスティングフレームワーク
標準で用意されているOCUnitの他にも他にもいろいろなテスティングフレームワークがある。
実機で動かすタイプのiUnitTestとか。
しかしそれだとLogic testsにあたる部分がめんどくさすぎるような気がするのだが、どうなのだろう。(このあたり使ってみてないので外してるかもしれないが)
あとSDKのバージョンアップで使えなくなったりしないのか不安があるということもあり、無難に標準のOCUnitを使うことにしたという話。
2010/06/28追記
OCUnit使えない!使いにくい!
しばらく使ってみてそんな結論に。
でも代わりも見つからない。どうしたらいいんでしょうか。