Stavo riscontrando qualche problema nell'unità di test di un grande codice di invio centrale con il framework di test delle unità Xcode incorporato, SenTestingKit. Sono riuscito a far bollire il mio problema. Ho un test unitario che costruisce un blocco e tenta di eseguirlo sul thread principale. Tuttavia, il blocco non viene mai effettivamente eseguito, quindi il test si blocca perché è un invio sincrono.dispatch_sync sulla coda principale si blocca nel test dell'unità
- (void)testSample {
dispatch_sync(dispatch_get_main_queue(), ^(void) {
NSLog(@"on main thread!");
});
STFail(@"FAIL!");
}
Che cos'è l'ambiente di testing che causa questo blocco?
Buona domanda e attendo la risposta corretta. Ho trovato più volte che usare dispatch_sync sulla coda principale finisce in deadlock quindi lo evito in generale. –
@ D.C. più volte o SEMPRE? Sono curioso come in come puoi 'dispatch_sync (dispatch_get_main_queue()' ** while ** sul thread principale non creerà dead lock !? – Honey