我是测试驱动开发的新手,并且有一个基本问题。如何访问私有属性进行单元测试?关于如何访问方法有很多答案,但我找不到很多属性。这是我现在为我的课程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
答案 0 :(得分:1)
在Objective-C中,属性是方法(如果是读/写,则每个属性都是getter和setter)。
只需在受保护的类别中声明您的属性,该类别应声明为此类
@interface CDTest(Protected)
- (void)setup;
@property (strong, nonatomic) NSManagedObjectContext *context;
@end