1

我正在工作 OCUnit 测试用例

- (NSDictionary*)Event:(EventBase*)event
{
    [self doesNotRecognizeSelector:_cmd];
    return 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 提前致谢

4

1 回答 1

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 中的约定是使用驼峰式命名方法和变量,在本例中为event:,Event:和。dict_Dic

于 2013-02-13T18:27:02.977 回答