iOSでのTest SenTestingKitについて
概要
iOSでのテストに使える、SenTestingKitの導入と解説
SenTestingKitとは
http://developer.apple.com/tools/unittest.html
iOSで使えるテスト用のフレームワーク。デフォルトで入っている。
ソースコードでテストを書き、ビルド時にテストを行う。
実行時ではないのがポイント。
手順
1.ターゲットを作る
ターゲットの作成が完了するとウインドウが開く。
ここで、このターゲットが依存する実行可能ターゲットとか決められるんだけど、
説明が長くなるのでパス。閉じる。
2.アクティブなターゲットをSomethingTestに設定する
3.テストのソースコード書く
.hと.mに別れるのが好ましくないので、SomethingTest.mという名前のソースのみ作成。
ソース:SomethingTest.m
#import <SenTestingKit/SenTestingKit.h>
#import <UIKit/UIKit.h>
@interface SomethingTest : SenTestCase {}
@end
@implementation SomethingTest
- (void) setUp {
NSLog(@"setUp");
}
- (void) tearDown {
NSLog(@"tearDown");
}
- (void) testSomething {
NSLog(@"testSomething");
STAssertTrue(FALSE, @"here comes");
}
@end
もし、2を行わずに3を作った場合、ターゲット[SomethingTest]の、
[ソースをコンパイル]の中に、SomethingTest.mが入っていないので、
エラーが出ると思う。おとなしくD&Dで足すと、実行出来る筈。
4.実行。
このソースだとSTAssertが必ずFALSEなので、⌘+Bでビルドすると、
ビルド時にエラーが出る。
失敗(!)2 のとこをクリックすると、ビルド結果の表示がされる。
▲を押して潜って行くと、(テストを通らなかった)原因の内容を見る事ができる。
STAssertの行を消すと、今度はエラー要因が無いので成功する。
以上。
STAssertTrueの他に、Equalsなどがある。
アレなところ
成功するとどんなテストに通ったかとか見えない。
setUpとtearDownがポインタの関係で非常にシビアになりやすい。
tearDown後に落ちる場合はまずその辺りを疑う。
テスト中にエラーが発生するともれなくテストのエラーが飛ばされる
= Obj-Cのコンソールにエラー原因が出るような事が無い ので、むしろ悩む場合がある。
実際にEmuや実機でテストの内容を実行(いろいろ手を加えて通常ターゲットから起動)して見ないと解決出来ないしょぼい私を許して。
今後
非同期テストについては今後記述を足して行く。
0 件のコメント:
コメントを投稿