it-swarm.it

Qual è il miglior framework di unit test per .NET e perché?

Mi sembra che tutti usino NUnit senza nemmeno considerare le altre opzioni. Penso che questo sia perché:

  • Tutti lo conoscono già, quindi non dovranno imparare una nuova API.
  • È già configurato con il loro server di integrazione continua per funzionare con NUnit.

Mi sbaglio su questo?

Ho deciso di utilizzare xUnit su uno dei miei progetti di recente e lo adoro! Ha molto più senso per me e concettualmente sembra un netto passo avanti da NUnit.

Mi piacerebbe conoscere le opinioni su quale framework sia effettivamente il migliore, senza prendere in considerazione la necessità di apprenderlo o riconfigurare i test automatici.

26
Nobody

MSTest

Personalmente uso MSTest. NUnit è davvero bello, ma in VS2010, MSTest è già completamente integrato in IDE e ci sono modelli di progetto completi per esso. Per .NET, se stai usando il 2010, penso che MSTest è la strada da percorrere (MSTest in VS2008 non credo sia all'altezza) semplicemente per la copertura del codice, test runner e altri strumenti che sono disponibili per te. (Se usi CodeRush o R #, allora hanno davvero ottimi test runner/strumenti per altri framework di test)

Modifica: da allora sono passato a XUnit. : D

15
Ryan Hayes

Ho iniziato a usare Gallio/MbUnit diversi anni fa. E le caratteristiche e le gemme che fornisce sono così potenti che non mi sono mai pentito della mia scelta. In effetti, ora faccio parte del team di sviluppo del progetto Gallio OSS; così posso contribuire a renderlo ancora più fantastico.

  • MbUnit ha molte potenti funzionalità che rendono la vita del mio sviluppatore più semplice (verificatori di contratti, fabbriche di test, comparatore di uguaglianza strutturale, test combinatori, framework di generazione dei dati, difformità del testo , asserzioni xml, punti di estensione, ecc.)
  • Gallio fornisce una piattaforma coerente per eseguire tutti i miei test con uno strumento di reporting Nice. Mi piace anche il fatto che posso integrare i test di altri progetti OSS che non usano MbUnit e li eseguono semplicemente. È anche conveniente un'integrazione trasparente all'interno di molti strumenti di terze parti (R #, PoSh, dotCover, ecc.) E l'estensibilità dell'infrastruttura è sorprendente (ad esempio, ho appena finito di scrivere un adattatore di prova per un framework di test C++ non gestito nativo Presto farà parte di una versione futura)

wiki è sicuramente un buon punto di partenza per scoprire Gallio e MbUnit v3. Mancano alcuni capitoli ma è già abbastanza utile.

14
Yann Trevin

Scegliere uno e usarlo è forse il passaggio più importante qui.

Personalmente sceglierei NUnit per alcuni motivi. Innanzitutto è il supporto degli utensili. Esiste un componente aggiuntivo gratuito per Visual Studio 201 e tutti i principali plug-in di terze parti lo supportano. Ogni singolo sistema di build, utilità di copertura dei test e server CI lo supporta. In molti casi senza plug-in. A livello di codice, a questo punto è in grado di gestire praticamente qualsiasi scenario: test basati sui dati, ereditarietà, classi di test astratte, classi di test generiche, configurazione, smontaggio, ecc. In una certa misura abbiamo xUnit = perché NUnit è diventato troppo ricco e potente.

Al di là di NUnit, penso che potresti fare un argomento abbastanza decente per MBUnit + Gallio, come menzionato da Yann - è un framework molto solido. Quello che dovresti evitare se possibile sarebbe MSTest, che ha alcuni difetti fatali IMHO. I difetti sono alcuni dei vincoli delle tue classi di test, come nessuna eredità e dipendenze da SKU di Visual Studio professionali o migliori. Compreso l'installazione di Visual Studio sul server di compilazione per eseguire i test.

9
Wyatt Barnett

L'unico motivo è che NUNIT è diventato più standard del settore rispetto a xUnit. Ma personalmente, adoro xunit.

0
Cheung