我正在使用OCUnit测试用例
- (NSDictionary*)Event:(EventBase*)event
{
[self doesNotRecognizeSelector:_cmd];
return nil;
}
我发现这种方法可以编写测试用例
在我的测试用例类中,我为上述方法传递事件值valid,invalid和nil
-(void)testEventNil{
NSDictionary *t_Dict;
EventClass *t_EventClass = [[EventClass alloc]init];
t_Dict = [t_EventClass Event:nil];
STAssertNil (t_Dict, @"Return nil");
}
-(void)testEventNil{
NSDictionary *t_Dict;
NSMutableDictionary *invalid;
[invalid setObject:@"1324" forKey @"Number"];
EventClass *t_EventClass = [[EventClass alloc]init];
t_Dict = [t_EventClass Event:];
STAssertNil (t_Dict, @"Return nil");
}
-(void)testEventvalid{
NSDictionary *t_Dict;
NSMutableDictionary *invalid;
[invalid setObject:@"WorkNameEvent" forKey @"EventNameKey"];
EventClass *t_EventClass = [[EventClass alloc]init];
t_Dict = [t_EventClass Event:];
STAssertNotNil (t_Dict, @"Return nil");
}
它给我发送错误无法识别的选择器发送到实例
任何人都可以建议我解决问题
@All 提前致谢
答案 0 :(得分:1)
您的代码有多处错误。我无法理解它。
您正在尝试测试旨在引发错误的方法。也许它打算被覆盖?现在唯一可能的测试是
EventClass *event = [EventClass new];
STAssertThrows([t_EventClass Event:nil],@"Should throw an error.");
当你写:t_Dict = [t_EventClass Event:];
时,你没有将任何参数传递给Event:
方法。
这也不起作用:
NSMutableDictionary *invalid;
[invalid setObject:@"WorkNameEvent" forKey @"EventNameKey"];
因为你没有初始化字典。也就是说,
NSMutableDictionary *invalid = [NSMutableDictionary new];
Objective-C中的约定是使用camel case命名方法和变量,在这种情况下event:
代替Event:
,dic
代替t_Dic
。