頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Xcode 5でユニットテストをテストしてみた

Xcode 5にしてからだったと思うんだけど、新規にプロジェクトを作ると頼んでもいないのになんちゃらテストってファイルみたいなのが一式作られるじゃない?

ユニットテスト関連ファイル

なんだよこれ?うざいなあと思っていたんだけど、一体どんなものか調べてみたら、、、もしかしてこれってすごく便利なのかも?!

Xcodeユニットテスト ガイド
↑これによるとSenTestingKit.frameworkを使ってて、確かにネット上でサンプル拾うとSTAssertNotNilのようにSTで始まるマクロがたくさん記述されてたりする。
Xcode 5だとデフォルトで使うフレームワークはXCTest.frameworkなのでST〜ってのはそれ以前なのかな。

どうも
ロジックユニットテスト
アプリケーションユニットテスト
の二種類があるみたいなんだけど、最初は何がどう違うのかよくわからなかったんだ。
でもDeveloper Centerにあるサンプルコード(電卓のやつね)でようやく納得。

ロジックテストはアプリ内のクラスやメソッドのテストをするのにオブジェクトを自分で作成するsetUpメソッド内で自分でクラスのオブジェクトを作ってやるのよ。こんな感じで。
-(void)setUp 
{
   calculator = [[Calculator alloc] init];
   STAssertNotNil(calculator, @"Cannot create Calculator instance");
}
それに対してアプリケーションユニットテストの場合は下のようにアプリ内が実行された時の参照を得て、それに対してごにょごにょとテストしてるんだよ。
- (void) setUp {
   app_delegate         = [[UIApplication sharedApplication] delegate];
   calc_view_controller = app_delegate.calcViewController;
   calc_view            = calc_view_controller.view;
}
そういうことなのかあ。


あと、テストを実行したらすぐに終わっちゃうので非同期処理の場合はどうするのかな?と思ったんだけど、、、
SenTestCase で非同期処理のテストをする方法 - A Day In The Life
こういう方法があるみたいなので試してみようとしたんだ。MultipeerConnectivity.frameworkで二台のiOSデバイスが接続できるかテストしたかったんだけど、、、Xcodeからテストできるのはデバイス一台だけらしく、二台目の起動はしてくれなかったよ。

エラーメッセージ

↑一台目を待たせている間に二台目を起動しようとしたら断られた、の図。 Build & RunはXcodeから複数台でもやってくれるから、そんな感じでテストもやってくれるものかと思ってたんだけどね。

<< UIAlertViewのメッセージ表示を一行で記述する  TopPage  アプリの順位が上がった時だけ通知してくれるアプリを作ってみた >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/828-e3f9ccf0




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad