OCUnit测试用例问题

时间:2013-02-13 15:33:27

标签: iphone ipad

我正在使用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 提前致谢

1 个答案:

答案 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