2012-03-16 118 views
0

我已经创建了一个项目,它工作正常。现在我需要编写一些测试用例。所以我添加并设置了SenTestingKit。然后,我开始通过创建一个类的实例来编写测试用例,并试图更改该类中某些变量的值。问题是我已经声明了一些变量作为本地(默认“保护”),并且这些变量不能被修改。那么是否有一种方法可以通过更改实例var值而不向每个变量添加@property(nonatomic,retain)来进行测试?在此先感谢..iPhone单元测试使用SenTesting框架

回答

0

我的目标是修改实例变量而不向变量添加@property()。我已经通过添加实例方法,如

-(void)setValueOfArrayCount:(int)newValue{ 

    arrayCount = newValue; 
} 

-(int)getValueOfArrayCount{ 

    return arrayCount; 
} 

而且我可以从这个类的外面调用这些方法。

0

您可以使用@public将其公开。你可以使用object-> member来访问成员。

0

Objective-C是一种高度自省且反身的语言。您可以访问和修改所有变量,而无需将其配置为公共。

如果你确实有一个setter(但受保护的),你只需要做些什么作为

[myObject的performSelector:@选择(setMyiVar :) withObject:值]。

如果你没有它的setter,你总是可以使用运行时方法来访问和修改你的ivar使用class_getInstanceVariable。检查它在http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

希望它有帮助!