it-swarm.dev

Was ist das beste Unit-Test-Framework für .NET und warum?

Es scheint mir, dass jeder NUnit verwendet, ohne auch nur die anderen Optionen zu berücksichtigen. Ich denke das liegt daran:

  • Jeder ist bereits damit vertraut, sodass er keine neue API lernen muss.
  • Es ist bereits mit dem Continuous Integration Server für die Arbeit mit NUnit eingerichtet.

Liege ich falsch?

Ich habe mich kürzlich entschieden, xUnit für eines meiner eigenen Projekte zu verwenden, und ich liebe es! Es macht für mich so viel mehr Sinn und konzeptionell scheint es ein klarer Schritt vorwärts von NUnit zu sein.

Ich würde gerne Meinungen darüber hören, welches Framework tatsächlich das beste ist - ohne zu berücksichtigen, dass Sie es lernen oder Ihre automatisierten Tests neu konfigurieren müssen.

26
Nobody

MSTest

Ich persönlich benutze MSTest. NUnit ist wirklich nett, aber in VS2010 ist MSTest bereits vollständig in die IDE und es gibt vollständige Projektvorlagen dafür. Für .NET, wenn Sie 2010 verwenden, dann denke ich, MSTest ist der richtige Weg (MSTest in VS2008 ist meiner Meinung nach nicht auf dem neuesten Stand), einfach für die Codeabdeckung, den Testläufer und andere Tools, die Ihnen sofort zur Verfügung stehen. (Wenn Sie CodeRush oder R # verwenden, dann Sie haben wirklich großartige Testläufer/Tools für andere Test-Frameworks.

Bearbeiten: Ich bin seitdem zu XUnit übergegangen. : D.

15
Ryan Hayes

Ich habe vor einigen Jahren angefangen, Gallio/MbUnit zu verwenden. Und die Funktionen und Juwelen, die es bietet, sind so mächtig, dass ich meine Wahl nie bereut habe. Tatsächlich bin ich jetzt Teil des Entwicklungsteams des Gallio OSS-Projekts. so kann ich dazu beitragen, es noch großartiger zu machen.

  • MbUnit verfügt über viele leistungsstarke Funktionen, die meinem Entwickler das Leben erleichtern (Vertragsprüfer, Testfabriken, Vergleicher der strukturellen Gleichheit, kombinatorische Tests, Framework zur Datengenerierung, Textunterschied) , XML-Zusicherungen, Erweiterungspunkte usw.)
  • Gallio bietet eine konsistente Plattform, um alle meine Tests mit einem Nice Reporting Tooling auszuführen. Ich mag auch die Tatsache, dass ich Tests aus anderen OSS-Projekten, die MbUnit nicht verwenden, integrieren und einfach ausführen kann. Die nahtlose Integration in viele Tools von Drittanbietern ist ebenfalls praktisch (R #, PoSh, dotCover usw.). Die Erweiterbarkeit der Infrastruktur ist erstaunlich (zum Beispiel habe ich gerade einen Testadapter für ein natives, nicht verwaltetes C++ - Testframework geschrieben Es wird bald Teil einer zukünftigen Version sein.

Das Wiki ist sicherlich ein guter Ausgangspunkt, um Gallio und MbUnit v3 zu entdecken. Es fehlen noch einige Kapitel, aber es ist schon ziemlich nützlich.

14
Yann Trevin

Eine auszuwählen und zu verwenden ist hier vielleicht der wichtigste Schritt.

Persönlich würde ich aus einigen Gründen NUnit wählen. In erster Linie ist die Werkzeugunterstützung. Es gibt ein kostenloses Add-In für Visual Studio 201 , das von allen wichtigen Plugins von Drittanbietern unterstützt wird. Jedes einzelne Build-System, Testabdeckungsprogramm und CI-Server unterstützt dies. In vielen Fällen ohne Plugin. Auf Codeebene kann derzeit nahezu jedes Szenario verarbeitet werden - datengesteuerte Tests, Vererbung, abstrakte Testklassen, generische Testklassen, Einrichtung, Abbau usw. Bis zu einem gewissen Grad haben wir xUnit = weil NUnit zu funktionsreich und leistungsfähig geworden ist.

Über NUnit hinaus könnte man, wie von Yann erwähnt, ein ziemlich anständiges Argument für MBUnit + Gallio vorbringen - es ist ein sehr solides Framework. Diejenige, die Sie vermeiden sollten, wenn überhaupt möglich, wäre MSTest, das meiner Meinung nach einige fatale Mängel aufweist. Fehler sind einige der Einschränkungen für Ihre Testklassen, z. B. keine Vererbung, und Abhängigkeiten von professionellen oder besseren Visual Studio-SKUs. Dazu gehört, dass Visual Studio auf dem Build-Server installiert sein muss, um die Tests auszuführen.

9
Wyatt Barnett

Der einzige Grund ist, dass NUNIT mehr Industriestandard als xUnit geworden ist. Aber ich persönlich liebe Xunit.

0
Cheung