2010/09/24からのアクセス回数 5704
Userinterface BuilderのXIBファイルを使ったテストは、iPhone SDKの単体テスト機能では上手く動作しません。
ここでは、もう一つの単体テストツールであるGoogle Tool for Mac(GTM)を使った方法を説明します。 GTMでは、iPhone Simulatorを起動しますので、起動は若干遅くなりますが、通常のiPhoneアプリケーションとして作成されますので、デバッグも簡単です。
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
"${SRCROOT}/GTMIPhoneUnitTest/RunIPhoneUnitTest.sh"
最初の単体テストとして、簡単な文字列のチェックを使います。
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
準備が整ったので、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を確認しているスナップショットをお見せします。
この記事は、
皆様のご意見、ご希望をお待ちしております。