Nel mio posto di lavoro abbiamo una soluzione C# .net contenente circa 50 progetti e circa 2000 test unitari. Dopo aver modificato il codice, è necessario eseguire tutti i test nella soluzione prima di trasferire le modifiche al server di generazione. L'esecuzione di tutti i test può richiedere circa 10-15 minuti. Stavo pensando - hey, forse potrebbe esserci qualche processo che analizzerebbe tutte le modifiche al codice che ho fatto, e poi decidere di eseguire solo i metodi di test rilevanti. Se questo tipo di analisi è possibile, invece di eseguire 2000 test il computer eseguirà solo 15 o 100 test, quindi stiamo parlando di un aumento della produttività molto piacevole e di un minor numero di mal di testa. Qualcuno ha qualche idea su come implementarlo o se tale software è disponibile?Test dell'unità di dipendenza del codice
risposta
Il nostro C# Test Coverage Tool può farlo.
modo incrementale strumenti solo i file che hanno cambiato da quando l'ultima esecuzione copertura di test.
Può essere utilizzato per tenere traccia della copertura di prova per ogni unità di test e quali file sono coinvolti. Quando un file cambia, lo confronta con la versione precedente; se un metodo coinvolto in alcuni test di unità in precedenza cambia, identifica quei test di unità. È necessario organizzare tale processo per associare le esecuzioni di test con i dati di copertura e rieseguire i test unitari identificati, ma si tratta di una piccola questione di scripting. La ragione di ciò è di consentire allo strumento di copertura del test di operare con framework di test arbitrari.
È possibile farlo sul server di build per risparmiare tempo. Ancora più importante, è possibile fornire a ciascuno sviluppatore questo, in modo che possa eseguire solo i test richiesti per convalidare il codice che modifica, prima di verificare le modifiche.
È davvero difficile dire cosa dipende da cosa in un ambiente multi-progetto. Idealmente:
- il test di unità sarebbero vero unità test, e nel 2000 di loro dovrebbe funzionare in forse 20 secondi.
- I test di durata maggiore verrebbero configurati su una build continua sul server di build, quindi ti verrebbe comunque notificato abbastanza velocemente da incasinare tutto se ti sei perso qualcosa, ma potresti personalmente permettertelo di essere solo un piccolo più selettivo nell'eseguire solo i test che si ritiene possano aver influito con le modifiche al codice prima del commit.
Visual Studio 2010 Premium e Ultimate hanno uno strumento "Test Impact" che fa esattamente questo.
Nel nostro ambiente usiamo NCrunch http://www.ncrunch.net/
Costruisce i progetti ed esegue i test di unità in background utilizzando più thread. Ti avvisa dei test unitari falliti in modo piacevole.
NCrunch fa praticamente quello che ti serve. Dare un'occhiata.
- 1. Test del codice monadico
- 2. Produrre codice di dipendenza dato codice OpenMP
- 3. google-test: copertura del codice
- 4. Test delle bilance del codice
- 5. Test del codice SQLite online
- 6. Gradle: come eseguire i test da una dipendenza del modulo?
- 7. Dipendenza del test Maven nel progetto multi-modulo
- 8. Unit test codice matematico
- 9. Test del codice asincrono con JUnit
- 10. Esecuzione del codice CloudKit nei test?
- 11. Test unità Elm e copertura del codice
- 12. Test del codice Swift con le precondizioni
- 13. Test unità rubino: esegui del codice dopo ogni test fallito
- 14. Unità di dipendenza dipendenza iniezione
- 15. Test unitario dell'attività del codice WF
- 16. Test delle prestazioni del codice PHP
- 17. g ++ dipendenza degli ordini di collegamento durante il collegamento del codice c al codice C++
- 18. Il valore degli strumenti di copertura del codice di test
- 19. Maven porta "test" dipendenza transitiva come "compilazione"
- 20. Iniezione di dipendenza nei test di integrazione di Grails
- 21. Quadro di prova di Google - Dipendenza tra casi di test
- 22. Test del codice Android con JUnit e JDK
- 23. Come risolvere l'iniezione di dipendenza del controller di base a scopo di test?
- 24. Dipendenza codice C++/"visualizzatore" grafico chiamate?
- 25. Test di copertura del codice in Visual Studio 2010? Come?
- 26. Marketplace beta del telefono beta test Codice di errore: 805a0194
- 27. Esecuzione di un test rapido del codice in eclissi
- 28. copertura del codice golang nei test di integrazione?
- 29. Costruttore Codice dipendenza frammento in Visual Studio
- 30. Come eseguire unit test contro diverse versioni di una dipendenza
+1 per separare i test di unità dai test di integrazione. Vedi http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – TrueWill