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


26

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?

Di recente ho deciso di utilizzare xUnit su uno dei miei progetti 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 impararlo o riconfigurare i test automatici.


6
Per favore, definisci meglio. Più economico? più semplice da programmare? minor numero di righe di codice per test? stackoverflow.com/questions/680298/…
Amir Rezaei,

Scusa, intendevo il più potente, stabile e intuitivo, qualunque cosa. Sto chiedendo opinioni e motivi per cui . Ho lasciato "il meglio" all'immaginazione del rispondente perché vorrei anche vedere quali di questi aspetti sono importanti per le persone.
Nessuno il

2
Se riesci a riformulare la tua domanda, potrebbe essere OK, altrimenti questa è solo una domanda "elenco di X" che non è costruttiva. Vedi sei linee guida per domande soggettive costruttive
ChrisF

2
"best" è una cosa stupida da chiedere - perché raramente esiste un singolo best in parte perché dipenderà dal contesto e in parte perché è inevitabilmente in qualche modo soggettivo.
Murph,

10
Murph. Innanzitutto, questo sito è per domande soggettive. In secondo luogo sto chiedendo opinioni, quindi mi piacerebbe vedere l'interpretazione del "migliore" degli altri. E non chiamarmi stupido.
Nessuno il

Risposte:


15

MSTest

Personalmente uso MSTest. NUnit è davvero bello, ma in VS2010, MSTest è già completamente integrato nell'IDE e ci sono modelli di progetto completi per esso. Per .NET, se stai usando il 2010, penso che MSTest sia 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 fuori dalla scatola. (Se usi CodeRush o R #, hanno degli ottimi runner / strumenti di test per altri framework di test)

Modifica: da allora sono passato a XUnit. : D


Ho votato sia per MbUnit / Galio che per questa risposta. MbUnit / Galio è semplicemente migliore, ma le loro mani sono legate quando si tratta di eseguire test MsTest, poiché alcune classi critiche in quella libreria .Net sono definitive e non estendibili. Tuttavia, se è necessario eseguire l'automazione della GUI, l'interfaccia utente codificata e cuite.codeplex.com/documentation funzionano al di sopra di MsTest, quindi è sufficiente utilizzarli.
Giobbe

2
Il problema che ho con MSTest è che non supporta nativamente i test della riga di comando, questo può essere un problema quando si desidera eseguire le unità tramite CI.
CmdrTallen,

1
Nunit ora è completamente integrabile in VS giusto?
BKSpurgeon,

Sì, lo è. Considerando che ormai ha circa 6 anni, sono passato personalmente a NUnit e poi a XUnit. Entrambi (e altri) hanno pacchetti nuget che fungono da adattatori per illuminare la stessa funzionalità VS di MSTest. Onestamente, MSTest è probabilmente in fondo all'elenco a questo punto. Vorrei votare XUnit o NUnit. oggigiorno poiché entrambi sono solidi, mantenuti e moderni.
Ryan Hayes,

14

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 semplificano la vita del mio sviluppatore (verificatori di contratti, fabbriche di test, comparatore di uguaglianza strutturale, test combinatori, framework di generazione di dati, difformità del testo, asserzioni xml, punti di estensione, ecc.)
  • Gallio offre una piattaforma coerente per eseguire tutti i miei test con un buon strumento di reporting. Mi piace anche il fatto che posso integrare i test di altri progetti OSS che non utilizzano MbUnit e li eseguono semplicemente. È inoltre 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)

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


Il comparatore di uguaglianza strutturale e il framework di generazione dei dati suonano alla grande. MbUnit può eseguire test basati sui dati, ovvero leggere file csv / xsd e usarli come argomenti del metodo di test? Questa è una delle principali attrazioni di xunit per me.
Nessuno il

Sicuro. ASAIK MbUnit è stato il primo framework di test per .NET a introdurre test basati sui dati. Può associare i paremeters di test a origini dati interne ([Row], [Column], ecc.) Ed esterne ([CsvData], [XmlData], ecc.). Maggiori dettagli qui: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin

Hanno risolto i problemi di performance che stavano avendo con Gallio e Visual Studio? L'affare è stato per noi.
Wyatt Barnett,

Ho usato MbUnit quando ho lavorato per una piccola azienda ed è stato fantastico! In seguito ho usato MsTest perché dovevo farlo, e ha funzionato bene. Preferisco ancora scrivere codice esplicito rispetto alla configurazione delle impostazioni del progetto. Il supporto aziendale aiuta però MSTest. Che il design sia brutto o bello, sai che tutto ciò che esce da MSFT sarà ben testato.
Giobbe

@YannTrevin Qual è lo stato di Gallio / MbUnit? Ho esaminato il repository di Google Code e sembra che non ci siano modifiche recenti. Lo sviluppo sta avvenendo altrove o il progetto è bloccato?
Wesley Wiser,

9

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 2010 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 di funzionalità 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.


0

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.