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/ –