У меня проблема при модульном тестировании класса. При запуске моего теста он компилируется без каких-либо ошибок, но затем вылетает (он НЕ терпит неудачу в смысле несоблюдения утверждения), отображая следующее сообщение об ошибке:
/Developer/Tools/RunPlatformUnitTests.include:451:0 Test rig '/Developer/Platforms
/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/Developer/usr/bin/otest'
exited abnormally with code 134 (it may have crashed).
Вот мой код:
Интерфейс класса:
@interface AbstractActionModel : NSObject
{
NSString* mName;
ActionType mType; // enum
float mDuration;
float mRepeatCount;
float mDelay;
NSArray* mTriggerAreas;
}
Реализация:
- (void) dealloc
{
[mTriggerAreas release];
[super dealloc];
}
- (id) initWithConfigData: (NSDictionary*) theConfigData
{
NSAssert(nil != theConfigData, @"theConfigData cannot be nil");
self = [super init];
if (self)
{
self.name = [theConfigData objectForKey:ACTION_NAME];
self.type = [[theConfigData objectForKey:ACTION_TYPE] intValue];
self.duration = [[theConfigData objectForKey:ACTION_DURATION] floatValue];
self.delay = [[theConfigData objectForKey:ACTION_DELAY] floatValue];
self.repeatCount = [[theConfigData objectForKey:ACTION_REPEAT_COUNT] floatValue];
self.triggerAreas = [theConfigData objectForKey:ACTION_TRIGGER_AREAS];
}
return self;
}
Вот код теста:
- (void) testCreateAction
{
SoundActionModel* testSoundAction = (SoundActionModel*)[SoundActionModelFactory createActionModel:self.actionConfig];
STAssertNotNil(testSoundAction, @"returned object must not be nil");
}
Метод фабрики createActionModel:
:
+ (AbstractActionModel*) createActionModel:(NSDictionary *)config
{
NSAssert(config != nil, @"config must not be nil");
SoundActionModel* retVal = [[[SoundActionModel alloc] initWithConfigData:config] autorelease];
return retVal;
}
Как упоминалось ранее: код компилируется и запускается, когда testCreateAction
закомментирован. Кажется, что проблема не в самом тесте (то есть в его утверждении).
Из этих сообщений ( аналогичная проблема 1 , аналогичная проблема 2 ) кажется, что это ошибка в XCode, но эти ссылки указывают на проблемы, возникающие при использовании Core Data который я не делаю) или OCMock (который я тоже не делаю - по крайней мере, неосознанно).
Может кто-нибудь сказать мне, как решить эту проблему? Если это окажется ошибкой, обходной путь будет очень признателен.