2013-02-08 13 views
47

Dobbiamo decidere quale tecnologia utilizzare per il nostro test dell'unità. Attualmente utilizziamo Visual Studio 2010 e non siamo soddisfatti di MSTest fornito con questo. È bug, scarso nella distribuzione (es. La directory di output delle impostazioni di test non è riconosciuta correttamente) e presenta diversi problemi quando si tenta di testare gli assembly nelle versioni a 32 bit e 64 bit. Per peggiorare le cose MSTest non ha una buona corrispondenza di impedenza con il nostro sistema di costruzione Jenkins. Abbiamo quindi pensato di trasferirci in NUnit. Tuttavia, nessuno nel nostro team ha una buona esposizione a NUnit. Inoltre, ci occuperemo presto di Visual Studio 2012.Visual Studio 2012 MSTest vs NUnit pro e contro

Ho bisogno di conoscere i pro e i contro di Visual Studio 2012 MSTest vs Nunit ultima versione. Poiché la maggior parte degli articoli su overflow dello stack sono correlati a versioni precedenti di VS, non sono correlati a noi. Suppongo che Microsoft abbia migliorato MSTest molto dal 2010. Si prega di fornire un paragone imparziale con i problemi tecnici dettagliati che avete affrontato in entrambe le tecnologie (versioni più recenti solo)

+0

Leggere un messaggio su madcoderspeak.blogspot.com/2011/11/nunit-vs-mstest-2011-edition.html. MSTest non ha avuto aggiornamenti frequenti/principali – Gishu

risposta

27

Attualmente sto utilizzando sia MSTest che NUnit al momento. IMHO NUnit è ancora una soluzione migliore. Se hai l'edizione Premium di Visual Studio 2012, in realtà è abbastanza bello, tranne per il fatto che non riesci a raggruppare i test. Mi piace il fatto che sia integrato in Visual Studio, ma la mancanza di raggruppamento e la possibilità di eseguire un sottoinsieme di test senza selezionarli manualmente è un grosso problema.

L'analisi della copertura è anche molto carina in Premium. È veloce e ti dà quello che ti serve velocemente. È una funzionalità Premium però.

Poiché mancano ancora le funzionalità in MSTest (anche le funzionalità rimosse rispetto a vs2010), consiglierei comunque di utilizzare NUnit per i test delle unità. I vantaggi includono il raggruppamento dei test per namespace, la possibilità di aggiungere annotazioni del caso di test (eseguendo lo stesso test più volte con parametri diversi) e funziona bene con Opencover e Report Generator per l'analisi della copertura. Il principale citato è che non è integrato come MSTest, quindi dipende davvero da quanto ti importa sapere se questo è un problema.

+0

Sebbene questo thread sia piuttosto vecchio, volevo solo aggiungere che è possibile raggruppare i test usando NUnit e VS (almeno l'aggiornamento 2012 1). Vedi questo articolo (http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part- 1-using-traits-in-the-unit-test-explorer.aspx) come riferimento. l'unica cosa che devi fare è aggiungere un attributo Category come '[Category (" MyGroup ")]' e raggruppare i test per tratto nell'esploratore di test di VS. Forse è il caso di sbdy. – nozzleman

10

@Biranchi: Non importa più quale framework di test unità si utilizza in Visual Studio 2012 (e versioni successive). Vedi il mio blogpost qui, il sequel di quello a cui ti riferisci. http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/20/part-2-using-traits-with-different-test-frameworks-in-the-unit-test-explorer.aspx

È anche possibile combinare test di diversi framework, è possibile farlo anche a livello di metodo !!
Ciò significa che è anche possibile spostare il codice legacy da uno all'altro senza effetti collaterali negativi.

Vedere anche questo per come utilizzare Nuget per installare l'adattatore NUnit nella soluzione, liberando lo sviluppatore per installarlo da sé. http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-unit-testing-with-traits-and-code-coverage-in-visual-studio-2012-using-the-tfs-build-and-the-new-nuget-adapter-approach.aspx

@Sriwantha: MSTest è una struttura più semplice di NUnit. NUnit (e anche XUnit) ti danno più flessibilità, il che porta anche a meno codice da scrivere. Un esempio: se stai usando le categorie (e dovresti), MSTest richiede una categoria per decorare ogni metodo. NUnit ti permette di decorare la classe - che avrà effetto per tutti i metodi in quella classe.NUnit anche permette di utilizzare le categorie fortemente tipizzati

public class Integration : Category {} 

Questo è sufficiente per dichiarare una categoria che è possibile utilizzare invece di

Category("Integration"); 

in cui si rischia di errori di ortografia.

NUnit offre un supporto molto migliore per i test basati sui dati. NUnit ha anche il supporto per theories

per citarne alcuni.

0

Un'altra cosa da aggiungere qui. Sembra che il motore MSTEST non funzioni bene con TFS Build in determinati scenari. Se si utilizza la generazione TFS, non riporterà i test saltati (contrassegnati con l'attributo Ignore). Comprenderà solo Assert.Inclusive. Se questo è un problema, dovresti usare NUnit al posto di MSTest.