テストのためにアクセッサを追加したりするのはちょっとあれなので何かいい方法がないか調べてみたらObjective-Cだとテストフレームワークの力を借りるまでもなくあっさりできますね・・
Objective-CのKey Value Codingを利用します。
これはざっくり言うとアクセッサーを用意しなくても、
setValue: forKeyとvalueForKeyを使えば、名前(Key)でクラスの変数にアクセスできるという代物です。
テスト対象はこのPersonというクラス。(メソッド名がひどいのは無視しましょう)
@interface Person : NSObject
{
@private
NSString* name;
}
- (NSString*)getName;
@end
@implementation Person
- (NSString*)getName {
return name;
}
@end
テストコードはこのようになります。
- (void)testName {
Person * person = [[Person alloc] init];
[person setValue:@"Taro" forKey:@"name"];
GHAssertEqualStrings(@"Taro", [person getName], @"not equeal name");
}
0 件のコメント:
コメントを投稿