2012-01-24 5 views
7

Quando si lavora su progetti più grandi, possono essere necessari almeno 10 secondi per compilare e avviare il quadro di test dell'unità. Esistono modi efficaci per ridurre il tempo del ciclo di feedback? Intendo apportare solo piccole modifiche in una classe di test unitaria e un'altra classe tra le esecuzioni di test.In C#, che cosa è un buon modo per migliorare il ciclo di feedback del test delle unità?

Ho preso in considerazione altri approcci. Non vedo alcun modo per compilare ed eseguire una singola classe di test e dipendenze. Potrei aumentare il numero di progetti nella soluzione in modo che ogni assemblea impiega meno tempo a compilare, ma ciò causa altri problemi. NCrunch sembra ridurre la necessità di eseguire manualmente i test, ma comunque compila gli assembly completi.

Chiarimento: I 10 secondi hanno incluso il tempo per compilare la classe di test dell'unità e la classe sotto test. Il mio problema con NCrunch potrebbe essere dovuto a un computer meno potente.

risposta

7

Dovresti inserire ogni classe di test in un assieme separato: un assembly è effettivamente l'unità di compilazione. Se occorrono 10 secondi per ricompilare dopo solo una modifica a una classe di test, ciò suggerisce che hai troppi test in un assembly o hai una macchina molto lenta. Potrebbe essere che ottenere una macchina migliore (o migliorare quella esistente con più memoria o un SSD) sia il modo migliore per andare avanti.

Io uso NCrunch personalmente e, sebbene compili ancora assiemi completi, il fatto che lo si faccia in background significa che di solito, quando ho preso un respiro mentale, i test sono stati ricostruiti e sono in esecuzione. NCrunch funziona bene se hai più processori e un ramdisk, tra l'altro - puoi impostare dove si costruisce, e anche quanti processori può usare.

Se avete solo considerato NCrunch (o The Mighty Moose ecc - roba simile), ma in realtà non provato, si dovrebbe dare un andare prima di ritenere che non sarà abbastanza veloce per voi.

+0

Non sono stato chiaro su un punto. I 10 secondi erano dopo una modifica alla classe in fase di test. Ho provato NCrunch, ma penso che al mio computer mancasse il potere. – BenMaddox

+0

Uso NCrunch e funziona senza intoppi. Certo, ho un computer recente e un SSD. –

+0

@BenMaddox: Quali specifiche è la tua macchina e quanto sarebbe realistico migliorarla? –

2

È possibile controllare AutoTest.Net, che è un componente aggiuntivo per Visual Studio che esegue i test dell'unità in background mentre si scrive il codice.

In questo modo è possibile trattare i test dell'unità più come errori/avvisi del compilatore e ottenere un feedback relativamente in tempo reale.

0

I test di unità dichiarativi azzererebbero efficacemente il tempo di compilazione, ma solo se consentito dalla propria architettura. Ad esempio, lo spostamento dei test delle unità sul database ha funzionato bene per noi in un progetto su larga scala.

+0

Continuerò a apportare modifiche a una classe sottoposta a test. Non ho mai considerato di spostare i test unitari in un database. – BenMaddox

+0

Sì, ci sarebbe un miglioramento quando verranno aggiunti solo nuovi test. – henginy

Problemi correlati