Iphone OCUnit出现问题-实例化自定义数据类型
我已经成功地为带有iPhoneSDK版本3.1.2的XCode版本3.2.2项目设置了单元测试 我已经创建了一个类“Callout”,我正试图在单元测试的上下文中实例化它。这个类有一个方法Iphone OCUnit出现问题-实例化自定义数据类型,iphone,objective-c,unit-testing,xcode,ocunit,Iphone,Objective C,Unit Testing,Xcode,Ocunit,我已经成功地为带有iPhoneSDK版本3.1.2的XCode版本3.2.2项目设置了单元测试 我已经创建了一个类“Callout”,我正试图在单元测试的上下文中实例化它。这个类有一个方法 -(id) initWithDictionary:(NSDictionary*)calloutDict includesSong:(BOOL)hasSong lastUpdate:(NSDate*)lastUpdate; 我在单元测试中调用它。执行此操作时,会出现错误“无法识别的实例发送到选择器”。这对我来
-(id) initWithDictionary:(NSDictionary*)calloutDict includesSong:(BOOL)hasSong lastUpdate:(NSDate*)lastUpdate;
我在单元测试中调用它。执行此操作时,会出现错误“无法识别的实例发送到选择器”。这对我来说没有任何意义,因此出于好奇,我将所有内容保持不变,并将'nil'作为dictionary参数传入,然后它构建并运行(当然测试失败,但它仍然运行)
有人知道这里发生了什么吗?我不认为在OCUnit中使用自定义数据类型有任何问题,因为我在单元测试的其他地方成功地做到了这一点
顺便说一句,下面是违规代码:
- (void)testCalloutNormal
{
NSDictionary *params = [[NSDictionary alloc] initWithObjects:[NSMutableArray arrayWithObjects:@"sent",
[NSNumber numberWithInt:100],
[NSNumber numberWithInt:50],
@"challengerUsername",
@"challengedUsername",
[NSDate date],
nil]
forKeys:[NSMutableArray arrayWithObjects:@"type",
@"challengerScore",
@"challengedScore",
@"challenger",
@"challenged",
@"dateAccepted",
nil]];
Callout *callout;
callout = [[Callout alloc] initWithDictionary:params includesSong:NO lastUpdate:[NSDate date]];
NSInteger ID = 1;
callout.calloutID = 1;
[params release];
STAssertEquals(CalloutOutcomeTypeWon, callout.outcome, @"Failure: challenger's score is higher than the challengee - should return CalloutOutcomeTypeWon");
}
谢谢
-马特
另外,我发现的大多数与OCUnit相关的线程通常都涉及到一些据说更好的单元测试框架的建议。我知道他们就在那里,但我不是很感兴趣,除非你有什么不同于GHUnit或Mac的谷歌工具箱。我不能肯定地说,但我怀疑问题在于OCUnit。基于这样一个事实,即当您为dictionary参数传递nil时,错误就消失了,我猜有问题的消息是在类中的某个地方发送到该dictionary引用的。当字典引用为nil时,它只是吸收消息 顺便说一句,如果你正在寻找一个不同于OCUnit/GHUnit/GTM的测试框架,我建议你去看看;它是BDD风格的测试框架,如Rspec或Jasmine。然而,正如前面提到的,我怀疑测试框架是您的问题