2013-09-01 8 views
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 
+0

같은 코드 냄새가 선언되어야하는, 보호 된 카테고리에 귀하의 재산을 선언합니다. 공개 API를 통해 전적으로 테스트 해보십시오. "하지만이게 정말 필요해."라고 말하면 시험에 귀를 기울여 라. 다른 반은 나간다. http://qualitycoding.org/testability-vs-hiding/ –

답변

1

Objective-C 속성은 메서드입니다 (각 속성은 읽기/쓰기 인 경우 getter 및 setter입니다).

그냥 전용 속성에 액세스하는 테스트를 원함이

@interface CDTest(Protected) 

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

@end 
+0

Duh를 참조하십시오. 내가 그걸 놓쳤다는 것을 믿을 수 없어. 감사. – BlueVoodoo