Verifica dell'assenza di un evento nel test dell'unità multithread

1

Ho un'applicazione legacy con un fragile test unitario (che è davvero più di un test di integrazione) che utilizzava molte chiamate di Thread.Sleep per attendere che accadessero degli eventi.

Mentre cercavo di introdurre un certo determinismo nei test con alcuni callback configurabili, mi sono imbattuto in un test che sta tentando di convalidare quello dato un determinato input, un altro evento non si verifica.

Sta anche utilizzando Thread.Sleep per attendere 100ms prima di verificare se è stato chiamato il callback, ma sto pensando che un ritardo nell'esecuzione potrebbe portare a un falso positivo.

Sto cercando di mantenere la suite di test scattante senza introdurre ritardi più lunghi aumentando il valore dell'attesa.

Per i test positivi ho creato alcune barriere di codice che vengono risolte nel corso del test, ma non vedo un pattern per determinare deterministicamente che un evento non si verificherà.

    
posta Steve Mitcham 17.04.2015 - 18:04
fonte

2 risposte

0

Imposta alcune variabili (accessibili per il tuo test unitario) quando si verifica l'evento. Se l'evento non si verifica, la variabile non viene impostata; puoi verificarlo nel tuo test dell'unità.

    
risposta data 17.04.2015 - 19:24
fonte
0

Se l'executor è un singleton, è necessario sostituire l'executor restituito dal suo getInstance() (o memorizzato nel campo statico INSTANCE ) con il framework di simulazione fino a quando non è possibile inserire DI. In questo modo puoi monitorare la coda delle attività e sapere quando non sono in attesa di completamento altre attività.

    
risposta data 18.04.2015 - 16:18
fonte

Leggi altre domande sui tag