2010/09/24からのアクセス回数 5564 Userinterface BuilderのXIBファイルを使ったテストは、iPhone SDKの単体テスト機能では上手く動作しません。 ここでは、もう一つの単体テストツールであるGoogle Tool for Mac(GTM)を使った方法を説明します。 GTMでは、iPhone Simulatorを起動しますので、起動は若干遅くなりますが、通常のiPhoneアプリケーションとして作成されますので、デバッグも簡単です。 GTMの準備 †ソースのダウンロード †SVNを使ってソースをダウンロードするので操作は簡単です。ここでは$HOME/local/GTM以下にダウンロードします。 $ mkdir -p ~/local/GTM; cd ~/local/GTM $ svn checkout http://hamcrest.googlecode.com/svn/trunk/ hamcrest-read-only iPhone単体テストの構築方法は、Googleの以下のサイトを参照しました。 http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting 使い方 †ソースの内、iPhoneの単体テストで使用するのは、以下のファイルです。 これをGTMIPhoneUnitTestディレクトリィにコピーし、単体テストを行うプロジェクトにコピーします。*1
使用例 †最初の単体テストとして、簡単な文字列のチェックを使います。 GTMTestCase.h #import "GTMSenTestCase.h" @interface MyGTMTestCase : GTMTestCase { } @end GTMTestCase.m #import "MyGTMTestCase.h" #define HC_SHORTHAND #import <OCHamcrest/OCHamcrest.h> #import <OCMock/OCMock.h> @implementation MyGTMTestCase - (void) testHello { assertThat(@"hello", is(@"hello")); } @end GTMを使ったViewControllerの単体テスト †準備が整ったので、ViewControllerの単体テストをします。*3 iPhone/最初の一歩のCopyTextViewControllerをXIBファイルからロードして、ビューとボタンが正しくセットされているか確認します。 -(void) testViewBinding { CopyTextViewController *viewController =[[CopyTextViewController alloc] initWithNibName:@"CopyTextViewController" bundle:nil]; [viewController loadView]; assertThat(viewController.view, isNot(nilValue())); assertThat(viewController.copyButton, isNot(nilValue())); } 締めくくりに、デバッガでloadViewの後の、viewControllerの属性toLabelを確認しているスナップショットをお見せします。 コメント †この記事は、 皆様のご意見、ご希望をお待ちしております。 Tweet |