Модульное тестирование iPhone с использованием SenTesting Framework - PullRequest
0 голосов
/ 16 марта 2012

Я создал проект, и он отлично работает. Теперь мне нужно написать несколько тестов. Поэтому я добавил и настроил SenTestingKit. Затем я начал писать тестовые случаи, создавая экземпляры класса и пытаясь изменить значение некоторых переменных в этом классе. Проблема в том, что я объявил некоторые переменные локальными (по умолчанию "защищено"), и эти переменные не могут быть изменены. Так есть ли способ проверить, изменив значение экземпляра var, не добавляя @property (nonatomic, retain) к каждой переменной? Заранее спасибо ..

Ответы [ 3 ]

0 голосов
/ 16 марта 2012

Objective-C - очень интроспективный и рефлексивный язык. Вы можете получить доступ и изменить все свои переменные, не настраивая их как общедоступные.

Если у вас действительно есть сеттер (но он защищен), вам нужно сделать что-то только как

[myObject executeSelector: @selector (setMyiVar :) withObject: value];

Если у вас нет установщика для него, вы всегда можете использовать методы времени выполнения для доступа и изменения вашего ивара с помощью class_getInstanceVariable. Проверьте это в http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

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

0 голосов
/ 18 марта 2012

Моей целью было изменить переменные экземпляра без добавления @property () к переменным. Я сделал это, добавив методы экземпляра, такие как

-(void)setValueOfArrayCount:(int)newValue{

     arrayCount = newValue;
}

-(int)getValueOfArrayCount{

     return arrayCount;
}

И я мог бы вызывать эти методы из этого класса.

0 голосов
/ 16 марта 2012

Вы можете сделать это общедоступным, используя @public. Вы можете получить доступ к члену, используя object-> member.

...