2015-09-18 14 views
25

Durante il test di una libreria di classi di Windows universale (.NET 4.6) in Visual Studio 2015, il tempo richiesto nel ciclo "red-> green-> refactor" è abbastanza lungo. Il mio progetto di test è solo il progetto MSTest "Unit Test App" standard. Anche nello scenario più semplice di una soluzione completamente nuova, di nuovi soggetti e progetti di test e di un metodo base int Add(int n1, int n2), occorrono circa 8-15 secondi. Questo è il tempo (dopo aver modificato un piccolo codice) facendo clic su "Esegui test" fino a quando viene mostrato il pass/fail.Qualsiasi metodo per accelerare il test dell'unità in Visual Studio 2015 per UWP

Sulla mia macchina (Win 10 pro) che esegue lo stesso esperimento ma con una soluzione basata su WPF produce circa 1-2 secondi.

Nello scenario UWP, il tempo di prova effettivo è elencato come 79 ms. Il resto del tempo è la compilazione e la distribuzione del contenitore dell'app unit test.

C'è un modo per velocizzare significativamente TDD con UWP?

risposta

32

Il motivo per cui il ciclo TDD impiega così tanto tempo è perché tutto il codice UWP deve essere eseguito in un AppContainer e ciò richiede il confezionamento e la distribuzione che sono lenti.

Il problema consiste nel separare più codice possibile in un altro progetto che non è necessario eseguire in un AppContainer e quindi verificare tale progetto.

La soluzione per questo è utilizzare una libreria di classi portatile per la logica dell'applicazione anziché una libreria di classi UWP. Troverete la libreria di classi portatile nella nuova finestra di dialogo di progetto:

enter image description here

Le impostazioni di default dovrebbe funzionare:

enter image description here

È quindi necessario aggiungere un riferimento dal UWP al libreria portatile in modo da poterlo consumare. Per testare la libreria portabile, utilizzare un normale progetto di test di unità non UWP:

enter image description here

Nota - per fare questo lavoro è necessario modificare il quadro target del progetto test di unità da 4.5.2 (quale è l'impostazione predefinita) a 4.6.

Qualsiasi test di unità eseguito dal progetto di verifica dell'unità standard verrà eseguito il più rapidamente possibile perché non è necessario eseguire in AppContainer. Ho provato questo fuori e la velocità del circuito interno è stata grande. Spero possa aiutare!