2015-11-02 11 views
9

Sto utilizzando Test Explorer in Visual Studio 2015 tramite l'adattatore NUnit VS per eseguire i miei test di unità.Perché i tempi di test NUnit sono lenti quando si utilizza "Esegui tutto" in Esplora test di VS 2015?

Quando si utilizza test Explorer di 'Run All' Command mio test eseguiti e spettacolo pass/fail in un secondo, ma il tempo di esecuzione totale è di 34 secondi.

Test Explorer using 'Run All'

Quando si selezionano tutti i test e l'utilizzo di 'test selezionati Esegui' dal menu contestuale destro del mouse le stesse prove hanno un tempo di esecuzione totale di 1 secondo.

Test Explorer using 'Run Selected Tests'

ho non ho trovato alcun indizio sul perché ci vuole molto più tempo di usare 'Run All'.

risposta

2

Diamo un'occhiata alla finestra di output. Se prendo "Esecuzione completa" la finestra di output è simile al seguente

------ Scopri di prova iniziato ------
========== Scopri di prova finita: 92 trovati (0: 00: 00.4993709) ==========
------ prova Eseguire iniziato prova ------
========== Run finito: 92 run (0: 00: 04.157636) ==========

Se invece selezionare tutti i test che voglio testare la finestra di output è simile al seguente

------ prova Eseguire iniziato ------
========== prova Run finito: 92 run (0: 00: 03.7262618) ======== ==

il punto è che quando si prende "Esecuzione completa" l'esploratore test deve passare attraverso tutto il codice e ri-trovare tutte le classi con l'attributo "TestClass" e tutti i suoi metodi decorati con la "TestMethod" attributo (questo viene fatto tramite riflessione che in alcuni casi potrebbe essere un po '"lento"). Perché? In modo che l'esploratore di test possa trovare tutti i metodi di test nuovi ed esistenti.

Quando si seleziona manualmente i metodi che si desidera testare, l'esploratore di prova non ha bisogno di ritrovare tutti i metodi esistenti e nuovi per testare, quindi è più veloce.

Questo è un po 'di una supposizione di ciò che il "tempo di funzionamento totale" si intende, non ho mai usato NUnit e pensieri avranno sicuramente era a lungo per inserire in un commento.