テストフレームワークGHUnitを試してみた
こんにちは。InputだけでなくOuputして、技術を身につけたいと思っている涼風です。
そこで今回はxUnitと呼ばれる単体テストのフレームワーク中で、iOSでないかと探しましたら、GHUnitがありました。今回は、こちらの記事をもとにGHUnitを試してみました。
★ GHUnitのダウンロード 以下URLから「GHUnitIOS-x.x.xx.zip」をダウンロードします。 https://github.com/gabriel/gh-unit/downloads
2012/11/15現在、最新のGUnitIOS-0.5.6.zipをダウンロードしました。 Mac OS X バージョン10.8.2を使用しました。
SampleTestMain.mないでGHUStackTraceFromException(exception)がコンパイルエラーになったため、[GHTesting descriptionForException:exception]に変更し、#import <GHUnitIOS/GHTesting.h>を追加しました。
SampleTestMain.m
#import <GHUnitIOS/GHUnit.h> #import <GHUnitIOS/GHTesting.h> void exceptionHandler(NSException *exception) { NSLog(@"%@\n%@", [exception reason], [GHTesting descriptionForException:exception]); } int main(int argc, char *argv[]) { NSSetUncaughtExceptionHandler(&exceptionHandler); NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = 0; if (getenv("GHUNIT_CLI")) { retVal = [GHTestRunner run]; } else { retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIPhoneAppDelegate"); } [pool release]; return retVal; }
判定するマクロ GHAssertEqualsは以下のような引数を持ちます。
GHAssertEquals(左の値, 右の値, 失敗したときに標準出力に表示する文字列)
左の値と右の値が異なるときに失敗します。
@"test"を@"計算結果に誤りがあります"に変更します。
- (void)testDivideRoundUp { NSInteger num = [Calc divideRoundUp:100 denominator:3]; GHAssertEquals(num, 33, @"計算結果に誤りがあります"); }
ほかに判定マクロはGHUnitIOS.framework/Headers/GHTestMacros.hにあります。
GHAssertNotNil(オブジェクト, 失敗したときに標準出力に表示する文字列)
オブジェクトがnilのとき失敗します。
GHAssertTrue(評価式, 失敗したときに標準出力に標示する文字列)
評価式がfalseのときに失敗します。
他にもまだマクロはたくさんあります。