0
我是新来测试驱动的开发,并有一个基本的问题。如何访问单元测试的私有属性?关于如何访问方法,有很多答案,但我无法在属性上找到很多答案。这是我现在为我的课堂CDTest所得到的。为了便于阅读,排除一些导入的标题。OCUnit私有属性
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
想要一个测试访问私有财产是一个代码味道。尝试完全通过您的公共API进行测试。如果你说,“但我真的需要这个,”听你的测试:另一个班正试图脱身。请参阅http://qualitycoding.org/testability-vs-hiding/ –