Visual Studio 2013 MSTest gegen NUnit

70

Mein Unternehmen aktualisiert unser Visual Studio 2012 auf 2013 Premium. In der Zwischenzeit möchten wir auch damit beginnen, unsere Tests mithilfe von Visual Studio Team Services zu automatisieren

Ich habe in der Vergangenheit einige Beiträge und Artikel zu MSTest vs nUnit gelesen, aber das meiste davon vergleicht die ältere Version von MSTest. Außerdem hatte nUnit im Vergleich zu MSTest viele positive Bewertungen.

Meine Frage ist, wie sich MSTest im Vergleich zu nUnit angesichts des Engagements von Microsoft für ALM, agile Praktiken und all die neuen Dinge, die sie in VS2013 Premium und Visual Studio Team Services hinzugefügt haben, um automatisierte Tests zu erleichtern und zu fördern, verhält.

Welche weiteren Überlegungen sollte ich treffen, bevor ich mich für ein zu verwendendes Testframework entscheide?

Nullreferenz
quelle
Sowohl MSTest als auch NUnit sind jahrelang stabil (ohne signifikante Fortschritte), daher sehe ich keinen wirklichen Bedarf für einen weiteren Vergleich, wenn Sie alte Beiträge finden können.
Lex Li

Antworten:

59

MSTest hat sich seit seiner Einführung nicht wesentlich geändert, sodass diese alten Vergleichspostings weiterhin gültig sind. Der Fokus von Microsoft auf ALM zielt hauptsächlich auf weitere Tooling- und Serverprodukte ab, aber das grundlegende Test-Framework hat sich nicht wesentlich geändert.

Es ist auch erwähnenswert, dass MSTest und seine gesamte ALM-Strategie auf viele verschiedene Arten von automatisierten Tests abzielen, einschließlich Integrationstests, Systemtests, Leistungstests usw. Für Unit-Tests ziemlich ungeeignet, da es zu schwer ist, um damit zu arbeiten.

Obwohl NUnit besser ist, würde ich es auch nicht empfehlen. Auch daran hat sich seit Jahren nicht viel geändert, und das Erweiterbarkeitsmodell ist offen gesagt ein Chaos.

Stattdessen würde ich xUnit.net empfehlen . Obwohl es auch nicht perfekt ist, ist es derzeit die beste Mainstream-Alternative für .NET. Es gibt viele Gründe, warum xUnit.net besser ist als MSTest .

Mark Seemann
quelle
6
Wird xUnit von der kontinuierlichen Integrationsfunktion von TFS unterstützt? '
Null Referenz
Sie müssen wahrscheinlich ein bisschen damit herumspielen
Mark Seemann am
@IsaacKleinman hast du xunit.github.io gesehen ? ... es hat ein Tutorial und FAQs, nicht schlecht.
dodgy_coder
Ich habe und habe mich für xunit entschieden, aber leider waren Unit-Tests in letzter Zeit meine höchste Priorität.
Isaac Kleinman
1
@ DavidRefaeli Ich habe MSTest seitdem nicht mehr angeschaut, aber ich habe nichts über Dinge gehört, die sich geändert haben. Ich denke, es ist bezeichnend, dass sowohl die Roslyn-, die .NET Core- als auch die ASP.NET Core-Codebasis xUnit.net (und damit nicht MSTest) als Unit-Test-Framework verwenden.
Mark Seemann
39

MSTest Vs NUnit:

  1. MSTest ist in VS integriert, sodass es einfach zu bedienen ist. Für NUnit sind Tools von Drittanbietern erforderlich (einige sind kostenlos, andere kostenpflichtig).
  2. VS bietet Ihnen Code Coverage in MSTest. NUnit benötigt DotCover (ein kostenpflichtiges Tool).
  3. MSTest bietet die Möglichkeit, Ihre Tests parallel auszuführen, wenn sie nicht voneinander abhängig sind. Dies ist keine Funktion, die NUnit bietet.
  4. NUNit bietet TestCaseSourceAttributeIhnen die Möglichkeit , parametrisierte Testfälle zu erreichen. In MSTest benötigen Sie jedoch eine, DataSourceAttributedie sich in einer XML-Datei befindet und bei komplexer Logik schwierig zu verwalten ist.
  5. NUnit ist schneller als MSTest.

Insgesamt sind beide Frameworks gut zu verwenden, aber ich würde vorschlagen, sich für NUnit zu entscheiden.

Arpitbakshi
quelle
1
2: Für NUnit stehen kostenlose / Open Source OpenCover + ReportGenerator-Tools zur Verfügung.
Nzeemin
8
Wenn Sie ReSharper mit Visual Studio verwenden, wird die Parallelisierung von NUnit-Tests aktiviert. Es gibt auch die Integration, die Sie in Punkt 1 erwähnen. Natürlich hat nicht jeder ReSharper, aber wenn Sie dies tun, werden einige der Vorteile, die MSTest bietet, weggenommen.
jfren484
3
NUnit lässt sich in den GUI-Testläufer von VS 2012 integrieren.
Scott Marcus