Модульное тестирование iPhone с использованием SenTesting Framework
Я создал проект, и он отлично работает. Теперь мне нужно написать несколько тестов. Поэтому я добавил и настроил SenTestingKit. Затем я начал писать тестовые случаи, создавая экземпляры класса и пытаясь изменить значение некоторых переменных в этом классе. Проблема в том, что я объявил некоторые переменные как локальные (по умолчанию "защищенные"), и эти переменные не могут быть изменены. Так есть ли способ проверить, изменив значение экземпляра var, не добавляя @property(nonatomic,retain) к каждой переменной? Заранее спасибо..
3 ответа
Моей целью было изменить переменные экземпляра без добавления @property() к переменным. Я сделал это, добавив методы экземпляра, такие как
-(void)setValueOfArrayCount:(int)newValue{
arrayCount = newValue;
}
-(int)getValueOfArrayCount{
return arrayCount;
}
И я мог бы вызвать эти методы из этого класса.
Вы можете сделать это общедоступным, используя @public. Вы можете получить доступ к члену, используя объект-> член.
Objective-C - очень интроспективный и рефлексивный язык. Вы можете получить доступ и изменить все свои переменные, не настраивая их как общедоступные.
Если у вас действительно есть сеттер (но он защищен), вам нужно только сделать что-то
[myObject executeSelector:@selector(setMyiVar:) withObject:value];
Если у вас нет сеттера для него, вы всегда можете использовать методы времени выполнения для доступа и изменения вашего ivar с помощью class_getInstanceVariable
, Проверьте это на http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html
Надеюсь, поможет!