1

私は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");
}

インスタンスに送信された認識されないセレクターというエラーが表示されます

問題を解決するために誰かが私にアドバイスできますか

@すべて事前に感謝します

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:に と をdic使用しt_Dicます。

于 2013-02-13T18:27:02.977 に答える