2016-06-27 26 views
10

Ich weiß, es gab eine Menge Fragen zu diesem Thema, aber irgendwie habe ich nicht eine, die meine Bedürfnisse angesprochen.VS 2013 MSTest vs nUnit vs xUnit

Mein Team sucht nach einem automatisierten Unit-Test unserer Anwendung. Wir haben das noch nie gemacht und niemand im Team hat viel Erfahrung damit. Ich wurde gebeten zu recherchieren und einen Rahmen für die Automatisierung unserer Unit Testing zu finden. Bisher habe ich die Auswahl auf MSTest, NUnit und xUnit beschränkt.

Überall im Internet, las ich negative Bewertungen über MSTest, aber es scheint das bequemste Werkzeug für mich zu unserem Zweck.

1) Unsere Anwendung ist .NET

2) Wir VS IDE für unsere Entwicklung in dem gesamten Team lizenzierten Nutzung.

3) Quelle Control Team Foundation Server 2010

4) Wir planen, CI/CD als Teil unserer Software Lieferprozess zu integrieren.

Ich glaube, dass MSTest direkt in dieses Setup integriert und bietet die sauberste Schnittstelle für uns zu arbeiten. Gibt es einen signifikanten Vorteil mit NUnit oder xUnit über MSTest, die wir berücksichtigen sollten?

+0

Geschrieben in 2010, noch heute gültig: http://blog.ploeh.dk/2010/04/26/WhyImmigratingfromMSTesttoxUnit.net –

+1

Mögliches Duplikat von [Visual Studio 2013 MSTest vs NUnit] (http://stackoverflow.com/questions/22650263/Visual-Studio-2013-Mstest-vs-Nunit) –

Antwort

26

Ich bin voreingenommen, weil ich an NUnit arbeite, aber der Vorteil von NUnit oder xUnit besteht darin, dass beide Frameworks mehr Funktionalität wie datengetriebene Tests, parallele Ausführung und eine Vielzahl erweiterter Funktionen bieten.

Nichtsdestotrotz gibt es nichts falsches mit MSTest, vor allem, wenn Ihr Team wenig Erfahrung mit Komponententests hat. Es ist gut in Visual Studio und mit TFS integriert, so dass das Hinzufügen von Tests ziemlich schmerzlos ist. Sowohl NUnit als auch xUnit integrieren sich ebenfalls gut, aber sie erfordern möglicherweise mehr Setup.

Fahren Sie fort und beginnen Sie mit MSTest. Es ist eine einfache Einführung in den Komponententest. Wenn Sie mit einigen Einschränkungen von MSTest beginnen, ist dies eine relativ einfache Migration zu NUnit oder xUnit. In einfachen Fällen müssen Sie nur Ihre NuGet-Pakete ändern und dann die Attribute suchen/ersetzen.

Wenn es um die Wahl zwischen xUnit und NUnit geht, sind beide eine gute Wahl, aber jede hat eine andere Philosophie. NUnit ist tendenziell flexibler und erlaubt eine Reihe von Teststilen und kann für Integrationstests verwendet werden. Es ist jedoch flexibel genug, um dich in den Fuß schießen zu lassen und erlaubt dir, Tests zu schreiben, die Puristen missbilligen würden. NUnit überlässt Ihnen die Wahl.

xUnit neigt jedoch dazu, ein wenig eigenwilliger zu sein und bringt Sie mit Gerätetests in die "Grube des Erfolgs". Meiner Erfahrung nach ist es ideal für Projekte im grünen Bereich, aber es kann das Testen von schlecht geplanten Brownfield-Projekten ohne Refactoring erschweren.

Am Ende können Sie mit diesen Test-Frameworks nichts falsch machen.

+2

Ich war in einer ähnlichen Position um 2000 und versuchte, unter etwa sechs .NET-Test-Frameworks zu wählen. Ich habe NUnit ausgewählt und hier bin ich. :-) – Charlie

+0

2000? lch Charlie, wow! –

+1

Ein interessanter Post für xUnit https://github.com/xunit/xunit/issues/350. Die Assertion-Fehlermeldung ist verschwunden und wird in xUnit nicht mehr angezeigt. Wenn ich sehe, dass sie das Thema abschließen, solange es noch so umstritten ist, bin ich mir nicht sicher, ob ich Vertrauen in ihre zukünftige Entwicklung haben sollte. Wie können wir wissen, dass sie nichts mehr für "Reinheit" wieder entfernen werden? – tia

9

Ich möchte einen negativen Aspekt von XUnit hinzufügen. Es hat nicht einmal eine grundlegende Dokumentation, nichts weiter als "Get Started". Keine API, nichts.

+0

Vielleicht hat sich das geändert? Ich fand es mehr als ausreichend. https://xunit.github.io/#Dokumentation –

3

Hier ist eine kurze Analyse der 3 Frameworks und nach Farbe sortiert. enter image description here

Legende von der Färbung:

enter image description here

MSTest es ist gut, nur weil es einfach und integriert in Visual Studio ist und es kommt von Microsoft. Es ist nicht flexibel genug und nicht sehr erweiterbar. Es ist mehr als nur ein Unit-Test-Framework, es unterstützt auch Integrationstests, Web- (Last-) Leistungstests. Die anderen 2 sind reine Unit Test Frameworks. Also würde ich sagen, MSTest ist "Jack of All Trades, Meister von niemandem".

NUnit ist meine Wahl, weil es die beste konsequent lange genug war. Es ist flexibler und einfacher mit sehr guter Benutzerbasis, Dokumentation und Community-Unterstützung.

XUnit ist am wenigsten meiner Wahl, weil es einem etwas anderen Stil folgt und persönlich sehe ich nicht viel Vorteil gegenüber NUnit. In einigen Fällen müssen Sie Ihren Code etwas umgestalten, damit er in die Testfälle passt. Aber das ist nur meine Meinung, da es viele gibt, die XUnit bevorzugen.

Verwandte Themen