Objective-Cのテストクラスからプライベートメソッド/プロパティを参照したい

2012年9月12日
ios / objc /

dkfjさんが Objective-Cで、プライベートメソッド・プロパティにアクセスし、ユニットテストを実行する方法 という記事を書かれていました。

せっかくなので私がやっている方法も書かせていただきます。

テスト対象のクラス

以下のようにプライベートメソッドとプロパティを持ったExampleClassをテストするとします。

#import "ExampleClass.h"

@interface ExampleClass()
- (BOOL)privateMethod;
@property (assign) BOOL flag;
@end

@implementation ExampleClass

- (BOOL)privateMethod
{
  return self.flag;
}

@end

テストクラス

自分の場合は、こんなかんじでテストクラスでテスト対象のプライベートメソッドやプロパティを宣言し直して使ってます。

#import <GHUnitIOS/GHUnit.h> 
#import "ExampleClass.h"

@interface ExampleClass (Private)
- (BOOL)privateMethod;
@property (assign) BOOL flag;
@end

@interface ExsampleClassTest : GHTestCase
@end

@implementation ExsampleClassTest

- (void)testPrivateMethod
{
  ExampleClass* example = [ExampleClass new];
  GHAssertFalse([example privateMethod], nil);
  example.flag = YES;
  GHAssertTrue([example privateMethod], nil);
}

@end

メリットとデメリット

メリット

デメリット

Related Entries
Latest Entries