Я успешно настроил модульное тестирование для проекта XCode версии 3.2.2 с iPhone SDK версии 3.1.2.
Я создал класс Callout, который я пытаюсь создать в рамкахконтекст юнит-теста.У класса есть метод
-(id) initWithDictionary:(NSDictionary*)calloutDict includesSong:(BOOL)hasSong lastUpdate:(NSDate*)lastUpdate;
, который я вызываю в модульном тесте.При этом я получаю сообщение об ошибке «Неопознанный экземпляр отправлен селектору».Это не имело никакого смысла для меня, поэтому из любопытства я оставил все то же самое и передал 'nil' в качестве параметра словаря, и он собирался и работал (конечно, не пройдя тест, но тем не менее).*
Кто-нибудь знает, что здесь происходит?Я не думаю, что есть что-то не так с использованием пользовательского типа данных в 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");
}
Спасибо!
-Matt
PS - Большинство найденных мной темOCUnit обычно включает в себя предложение некоторой, предположительно, лучшей системы модульного тестирования.Я знаю, что они там есть, но мне не очень интересно, если у вас нет ничего отличного от GHUnit или набора инструментов Google для Mac.