2016-06-27 52 views
10

Mi rendo conto che ci sono state MOLTE domande su questo argomento ma in qualche modo non ne ho trovato uno che rispondesse alle mie esigenze.VS 2013 MSTest vs nUnit vs xUnit

Il mio team sta cercando di avviare l'unità automatizzata testando la nostra applicazione. Non l'abbiamo mai fatto prima e nessuno nel team ha molta esperienza con esso. Mi è stato chiesto di ricercare e trovare una struttura per automatizzare i nostri Test unitari. Finora, ho ristretto le scelte fino a MSTest, NUnit e xUnit.

Tutto su Internet, ho letto recensioni negative su MSTest ma mi sembra lo strumento più conveniente per il nostro scopo.

1) La nostra applicazione è NET

2) Abbiamo uso autorizzato VS IDE per il nostro sviluppo in tutta la squadra.

3) controllo del codice sorgente è Team Foundation Server 2010

4) Abbiamo in programma di integrare CI/CD come parte del nostro processo di distribuzione software.

Ritengo che MSTest si integri direttamente in questa configurazione e fornisca l'interfaccia più pulita su cui lavorare. C'è un vantaggio significativo con NUnit o xUnità su MSTest che dovremmo prendere in considerazione?

+0

Scritto nel 2010, ancora valido oggi: http://blog.ploeh.dk/2010/04/26/WhyImmigratingfromMSTesttoxUnit.net –

+1

Possibile duplicato di [Visual Studio 2013 MSTest vs NUnit] (http://stackoverflow.com/questions/22650263/visual-studio-2013-mstest-vs-nunit) –

risposta

26

Sono polarizzato perché lavoro su NUnit, ma il vantaggio di NUnit o xUnit è che entrambi i framework offrono più funzionalità come test basati sui dati, esecuzione parallela e una serie di funzionalità avanzate.

Detto questo, non c'è niente di sbagliato con MSTest, specialmente se la tua squadra non ha molta esperienza con i test unitari. È ben integrato con Visual Studio e con TFS, quindi l'aggiunta di test è abbastanza indolore. Sia NUnit che xUnit si integrano bene, ma possono richiedere più setup.

Prosegui e inizia con MSTest. È una facile introduzione al test delle unità. Se inizi a incorrere in alcune delle limitazioni di MSTest, allora è una migrazione abbastanza facile verso NUnit o xUnit. Per casi semplici, è solo questione di modificare i pacchetti NuGet e quindi trovare/sostituire gli attributi.

Quando si tratta di scegliere tra xUnit e NUnit, entrambe sono scelte grandiose ma ognuna ha una filosofia diversa. NUnit tende ad essere più flessibile e consente una gamma di stili di test e può essere utilizzato per i test di integrazione. È comunque abbastanza flessibile da permetterti di spararti ai piedi e ti permette di scrivere prove che i puristi avrebbero disapprovato. NUnit ti lascia la scelta.

xUnit tuttavia tende ad essere un po 'più supponente e ti spinge verso il "pozzo del successo" con i test unitari. Nella mia esperienza, è ottimo per i progetti di campo verde, ma può rendere difficile testare alcuni progetti brown-field scarsamente architetturali senza refactoring.

Alla fine, non si può sbagliare con nessuno di questi quadri di prova.

+2

Mi trovavo in una posizione simile intorno al 2000, cercando di scegliere tra circa sei framework di test .NET. Ho selezionato NUnit ed eccomi qui. :-) – Charlie

+0

2000? lol @ Charlie, wow! –

+1

Un post interessante per xUnit https://github.com/xunit/xunit/issues/350. Il messaggio di errore di asserzione è finito e non tornerà in xUnit. Quando li vedo chiudere il problema mentre è ancora controverso, non sono sicuro che dovrei avere fiducia per il loro sviluppo futuro. Come potremmo sapere che non rimuoveranno altro per la "purezza"? – tia

9

Vorrei aggiungere un aspetto negativo di XUnit. Non ha nemmeno una documentazione di base, niente oltre "Inizia". Nessuna API, niente.

+0

Forse è cambiato? L'ho trovato più che adeguato. https://xunit.github.io/#documentation –

3

Ecco una breve analisi dei 3 quadri e ordinati per colore. enter image description here

leggenda della colorazione:

enter image description here

MSTest è solo buono perché è semplice e integrato in Visual Studio e viene da Microsoft. Non è abbastanza flessibile e non è molto estensibile. Ma più che un semplice framework di test unitario, supporta anche test di integrazione, test di prestazioni del web (carico). Gli altri 2 sono puri quadri di test unitari. Quindi direi che MSTest è "Jack of all Trades, Master of none".

NUnit è la mia scelta perché è stato il migliore abbastanza lungo abbastanza. È più flessibile e semplice con un'ottima base di utenti, documentazione e supporto per la comunità.

XUnit è la scelta meno importante perché segue uno stile leggermente diverso e personalmente non vedo molto vantaggio rispetto a NUnit. In alcuni casi è necessario eseguire alcune procedure di refactoring del codice per adattarle ai casi di test. Ma questa è solo la mia opinione in quanto ci sono molti che preferiscono XUnit.

Problemi correlati