Tag: Objective-C Xcode
http://github.com/katsuyoshi/iunittest からダウンロード
git clone http://github.com/katsuyoshi/iunittest.git
自分用
git clone git@github.com:src256/iunittest.git
ダウンロードしたフォルダに移動しsetup実行
sudo ./setup
cd tools/opencode
sudo cp build/Release/opencode /usr/local/bin
./install
@interface RootViewController : UITableViewController { NSArray* dataSource; }
- (void)viewDidLoad { [super viewDidLoad]; dataSource = [[NSArray alloc] initWithObjects: [NSArray arrayWithObject:@"Hokkaido"], [NSArray arrayWithObjects:@"Aomori", @"Iwate", @"Akita", @"Yamagata", @"Miyagi", @"Fukusima", nil], nil]; } - (void)dealloc { [dataSource release]; [super dealloc]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return dataSource.count; }
- (NSString *)viewControllerName { return @"RootViewController"; } - (BOOL)hasNavigationController { return YES; } - (void)testNumberOfSectionsInTableView { // ASSERT_FAIL(@"not implemented"); ASSERT_EQUAL_INT(2, [self.tableViewController numberOfSectionsInTableView:self.tableViewController.tableView]); }
[iPhone][Develop][Test] iUnitTestを使ってみた。 - Ni chicha, ni limona - 平均から抜けられない僕 - iPhoneアプリ開発グループより
ASSERT(value) | 真の場合OK |
ASSERT_FAIL(m) | 常に失敗 |
ASSERT_SAME(_expected, _value) | ==演算子で比較 |
ASSERT_NOT_SAME(_expected, _value) | ==演算子で比較 |
ASSERT_EQUAL(_expected, _value) | isEqualメソッドで比較 |
ASSERT_NOT_EQUAL(_expected, _value) | isEqualメソッドで比較 |
ASSERT_EQUAL_INT(_expected, _value) | int型特化 |
ASSERT_NOT_EQUAL_INT(_expected, _value) | int型特化 |
ASSERT_EQUAL_FLOAT(_expected, _value) | float型特化 |
ASSERT_NOT_EQUAL_FLOAT(_expected, _value) | float型特化 |
ASSERT_EQUAL_FLOAT_DELTA(_expected, _value, _delta) | float型特化。許容誤差指定 |
ASSERT_EQUAL_DOUBLE(_expected, _value) | double型特化 |
ASSERT_NOT_EQUAL_DOUBLE(_expected, _value) | double型特化 |
ASSERT_EQUAL_DOUBLE_DELTA(_expected, _value, _delta) | double型特化。許容誤差指定 |
ASSERT_NIL(_value) | nilかどうか |
ASSERT_NOT_NIL(_value) | nilかどうか |
ASSERT_EQUAL_POINT(_expected, _value) | CGPoint型特化 |
ASSERT_EQUAL_SIZE(_expected, _value) | CGSize型特化 |
ASSERT_EQUAL_RECT(_expected, _value) | CGRect型特化 |
ASSERT_RAISE(expr) | 例外指定 |
ASSERT_NOTHING_RAISED(expr) | 例外指定 |
iUnitTestでやった事 - リンゴの水やり?(はてな)によるとiPhoneのUIには仕組みが準備されてないので、テストコード変更する。#define TEST_ALWAYSを有効にする。
// Uncomment it, if you want to test this class except other passed test classes. //#define TESTS_ALWAYS #ifdef TESTS_ALWAYS - (void)testThisClassAlways { ASSERT_FAIL(@"fail always"); } + (BOOL)forceTestsAnyway { return YES; } #endif