2015-11-09 2 views
1

Я написал скрипт, похожий на приведенный ниже код. Я оставил точку останова внутри «dispatch_async», но он не выполняется. Что может быть здесь?IOS: тестирование модуля с использованием dispatch_async не выполняется

dispatch_async(dispatch_get_main_queue()) { 

    let array = response!.allObjects as! [NSArray]  
    XCTAssertNotEqual(array.count, 0, testPassed); 
    self.waitForExpectationsWithTimeout(10, handler: { (error: NSError?) -> Void in 
     if(error != nil) { 
      XCTFail("Failed with error: \(error) 
     } 
    }) 


} 

ответ

2

Это dispatch_async не может иметь смысл в модульном тесте. Единичный тест выполняется в главной очереди. Он не освободит очередь для запуска другого блока до окончания тестирования устройства, и в этот момент слишком поздно запустить этот блок.

Как написано, единственный способ, это имеет смысл - полностью удалить dispatch_async. Ты в главной теме. Просто выполните код, который вы хотите.

+0

Спасибо Робу за быстрый ответ. Когда я удаляю dispatch_async, сбой тестового скрипта. Я задал вопрос в «https://stackoverflow.com/questions/33576790/xctest-crashing-in-xctestexpectations-in-ios». Не уверен, что вызывает сбой ... Если я выполняю одну тестовую функцию, она работает нормально. Но если я запускаю тестовые скрипты для всего проекта (около 1000 тестов), он сбой. – Coder