私有财产的OCUnit

时间:2013-09-01 18:30:12

标签: ios objective-c unit-testing tdd ocunit

我是测试驱动开发的新手,并且有一个基本问题。如何访问私有属性进行单元测试?关于如何访问方法有很多答案,但我找不到很多属性。这是我现在为我的课程CDTest所得到的。为了便于阅读,排除了一些导入的标题。

CDTest.h

@interface CDTest : NSObject

@end

CDTest.m

#import "CDTest.h"
#import "CDTest+Protected.h"

@interface CDTest()

@property (strong, nonatomic) NSManagedObjectContext *context;

@end

@implementation CDTest

- (void)setup
{
    //Sets up the context
}

@end

CDTest + Protected.h

@interface CDTest()

- (void)setup;

@end

单元测试.m文件

#import "CDTest.h"
#import "CDTest+Protected.h"

@implementation CDTestTests
{
    CDTest *cdTest;
}

- (void)setUp
{
    [super setUp];
    cdTest = [CDTest new];
}

- (void)testSetup
{
    [cdTest setup];
    //Now I need access to the properties in cdTest to validate them
}

@end

1 个答案:

答案 0 :(得分:1)

在Objective-C中,属性是方法(如果是读/写,则每个属性都是getter和setter)。

只需在受保护的类别中声明您的属性,该类别应声明为此类

@interface CDTest(Protected)

- (void)setup;
@property (strong, nonatomic) NSManagedObjectContext *context;

@end