Domanda

Grazie a un aggiornamento della libreria (easymock 2.2 - > 2.4), stiamo avendo dei test che hanno iniziato a bloccarsi. Mi piacerebbe passare un po 'di tempo sui test individuali, tutti quanti. L'idea è di identificare i test bloccati - al momento stiamo indovinando - e risolverli.

È possibile, preferibilmente a livello di suite? Abbiamo 400 test, facendo questo ogni metodo o anche ogni classe richiederà tempo.

È stato utile?

Soluzione

Il il tag suite può avere l'attributo di timeout. Questo timeout verrà utilizzato come predefinito per tutti i metodi di prova.

Questo timeout predefinito può essere sovrascritto in base al metodo per test.

Altri suggerimenti

Se il livello Suite risulta essere l'approccio sbagliato (ovvero " troppo ampia una net " ;, poiché si finisce per contrassegnare troppi metodi con un limite di timeout), è necessario definire un personalizzato IAnnotationTransformer che, per ogni funzione illeggibile, ti darà l'opportunità di modificare un'annotazione @Test (con, ad esempio, la metodo setTimout () ).
(setTimout(0) annulla una direttiva di timeout)

Molto tardi, ma: l'esecuzione di jstack -l <PID> ti darà il dump dello stack, che puoi controllare per trovare quali chiamate sono bloccate. Potresti voler campionare alcune volte per essere sicuro che siano bloccati.

È possibile effettuare una ricerca e sostituire " @Test " con " @Test (timeout =) " Dovrebbe funzionare per trovare il test bloccato e può essere annullato dopo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top