Модульное тестирование 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

Надеюсь, поможет!

Другие вопросы по тегам