Модульное тестирование в XCode: тестовый стенд '[...] / usr / bin / otest' аварийно завершился с кодом 134 - PullRequest
2 голосов
/ 17 февраля 2011

У меня проблема при модульном тестировании класса. При запуске моего теста он компилируется без каких-либо ошибок, но затем вылетает (он НЕ терпит неудачу в смысле несоблюдения утверждения), отображая следующее сообщение об ошибке:

/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 (который я тоже не делаю - по крайней мере, неосознанно).

Может кто-нибудь сказать мне, как решить эту проблему? Если это окажется ошибкой, обходной путь будет очень признателен.

1 Ответ

3 голосов
/ 21 августа 2012

У меня также была эта проблема при запуске с OCUnit. Это вызвано попыткой выполнить тест как настройку в режиме теста логики, а не в режиме теста приложения. Если тестируемый код имеет некоторую зависимость от Cocoa или Cocoa Touch, этот код должен выполняться с целью, настроенной для тестирования приложения.

Тот факт, что сам тестовый запуск дает сбой, выглядит для меня как ошибка xcode, поскольку AppCode будет продолжать проходить эту точку.

Хороший источник для настройки этих тестов - здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...