2011-08-18 11 views
6

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

2

Il nostro C# Test Coverage Tool può farlo.

  1. modo incrementale strumenti solo i file che hanno cambiato da quando l'ultima esecuzione copertura di test.

  2. 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.

5

È 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.
+5

+1 per separare i test di unità dai test di integrazione. Vedi http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – TrueWill

2

Visual Studio 2010 Premium e Ultimate hanno uno strumento "Test Impact" che fa esattamente questo.

+0

Interessante se è in grado di raccogliere test NUnit e non solo MSTest – sll

+0

+1 @DBM: Bella cosa non lo so mai prima , http://blogs.msdn.com/b/phuene/archive/2009/12/07/test-impact-analysis-in-visual-studio-2010.aspx – sll

+0

@sllev è limitato ai soli test MSTest. – ckittel

0

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.

Problemi correlati