Я новичок в разработке, основанной на тестах, и задаю основной вопрос. Как получить доступ к приватным свойствам для модульного тестирования? Есть много ответов на то, как вы обращаетесь к методам, но я не смог найти много свойств. Вот что я получил сейчас для своего класса CDTest. Исключая некоторые импортированные заголовки для удобства чтения.OCUnit on private properties
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/ –