FrontPage

2010/09/24からのアクセス回数 2826

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の単体テストで使用するのは、以下のファイルです。

GTM_list.png

これをGTMIPhoneUnitTestディレクトリィにコピーし、単体テストを行うプロジェクトにコピーします。*1

  • グループとファイルでプロジェクト名を右クリックして、「追加」→「既存のファイル」で「GTMIPhoneUnitTest」を選択し、追加します。
  • 次にターゲットを右クリックで「追加」→「新規ターゲット」で「Cocoa Touch」の「Application」を選択し、次へボタンを押します。ターゲット名を入力(ここではGTMUnitTestsと)します。
  • GTMIPhoneUnitTest以下のソースファイル*2と単体テストのと単体テストに必要なソースを「ソースをコンパイル」にドラッグし、 すべてのXIBファイルを「バインドリソースをコピー」にドラッグし、 必要なフレームワークを「バイナリをライブラリにリンク」にドラッグします。
  • 最後にターゲットのGTMUnitTestsを右クリックで「追加」→「新規ビルドフェーズ」→「新規スクリプトを実行」を選択し、「シェルスクリプト」に以下の行を入力します。
    "${SRCROOT}/GTMIPhoneUnitTest/RunIPhoneUnitTest.sh"
    
  • OCMock, OCHamcrestと一緒に使う場合には、外部リンクフラッグに-ObjC, -all_load, -lstdc++ を追加します

使用例

最初の単体テストとして、簡単な文字列のチェックを使います。

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を確認しているスナップショットをお見せします。

ViewController_debug.png

コメント

この記事は、

選択肢 投票
おもしろかった 2  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


*1 すぐに使いたい方は、以下のファイルを解凍してご使用ください。fileGTMIPhoneUnitTest.zip
*2 .mで終わるファイル
*3 Carbon Five Communityの http://blog.carbonfive.com/2010/03/testing/testing-view-controllers を参考にしました

添付ファイル: fileViewController_debug.png 465件 [詳細] fileGTMIPhoneUnitTest.zip 344件 [詳細] fileGTM_list.png 468件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-02-24 (木) 00:11:47 (2433d)
SmartDoc