Es gibt eine ganze Reihe von nichtssagenden Frameworks für .NET. Ich habe diesen kleinen Funktionsvergleich gefunden: http://xunit.github.io/docs/comparisons.html
Jetzt soll ich das beste für uns auswählen. Aber wie? Ist das wichtig? Welches ist am zukunftssichersten und hat eine ordentliche Dynamik dahinter? Sollte ich mich um die Funktionen kümmern? Während xUnit am modernsten und speziell für .NET entwickelt zu sein scheint, scheint NUnit wieder das zu sein, was allgemein akzeptiert wird. MSTest ist wieder in Visual Studio integriert ...
Antworten:
Ich weiß, dass dies ein alter Thread ist, aber ich dachte, ich würde eine Abstimmung für xUnit.NET veröffentlichen . Während die meisten anderen erwähnten Test-Frameworks ziemlich gleich sind, hat xUnit.NET einen ziemlich einzigartigen, modernen und flexiblen Ansatz für Unit-Tests gewählt. Die Terminologie wird geändert, sodass Sie TestFixtures und Tests nicht mehr definieren. Sie geben Fakten und Theorien zu Ihrem Code an, die sich besser in das Konzept eines Tests aus TDD / BDD-Sicht integrieren lassen.
xUnit.NET ist auch EXTREM erweiterbar. Die Attributklassen FactAttribute und TraitAttribute sind nicht versiegelt und bieten überschreibbare Basismethoden, mit denen Sie genau steuern können, wie die von diesen Attributen dekorierten Methoden ausgeführt werden sollen. Während xUnit.NET in seiner Standardform das Schreiben von Testklassen ermöglicht, die NUnit-Testgeräten mit ihren Testmethoden ähnlich sind, sind Sie überhaupt nicht auf diese Form des Komponententests beschränkt. Es steht Ihnen frei, das Framework zu erweitern, um die hier dargestellten Concern / Context / Observation-Spezifikationen im BDD-Stil zu unterstützen .
xUnit.NET unterstützt auch das sofortige Testen im Fit-Stil mit seinem Theory-Attribut und den entsprechenden Datenattributen. Fit-Eingabedaten können aus Excel, einer Datenbank oder sogar einer benutzerdefinierten Datenquelle wie einem Word-Dokument geladen werden (indem das Basisdatenattribut erweitert wird). Auf diese Weise können Sie eine einzige Testplattform sowohl für Komponententests als auch für Integrationstests nutzen kann bei der Reduzierung von Produktabhängigkeiten und erforderlichen Schulungen enorm sein.
Andere Testansätze können auch mit xUnit.NET implementiert werden ... die Möglichkeiten sind ziemlich unbegrenzt. In Kombination mit einem anderen sehr zukunftsweisenden Spott-Framework, Moq , bilden die beiden eine sehr flexible, erweiterbare und leistungsstarke Plattform für die Implementierung automatisierter Tests.
quelle
Trait
wirklich funktioniert, oder ob Sie verschiedene Tests innerhalb eines Elterntests gruppieren können (z. B. alletests
innerhalb eines Teststestfixture
). nUnit erstellt eine großartige hierarchische Ansicht anstelle der flachen Ansicht von xUnit für Tests. Außerdem macht die Nomenklatur keinen Sinn - Fakten und Theorie? Sei realistisch! Das sind besser Tests und Daten.NUnit wird wahrscheinlich am meisten von Tools von Drittanbietern unterstützt. Es ist auch schon länger als die anderen drei.
Ich persönlich interessiere mich nicht sehr für Unit-Test-Frameworks, verspottete Bibliotheken sind meiner Meinung nach viel wichtiger (und sperren Sie viel mehr ein). Wählen Sie einfach eine aus und bleiben Sie dabei.
quelle
Ich würde nicht mit MSTest gehen. Obwohl es wahrscheinlich der zukunftsfähigste Beweis für die Frameworks ist, hinter denen Microsoft steht, ist es nicht die flexibelste Lösung. Ohne Hacks läuft es nicht alleine. Daher ist es schwierig, es auf einem anderen Build-Server als TFS auszuführen, ohne Visual Studio zu installieren. Der Visual Studio-Testläufer ist tatsächlich langsamer als Testdriven.Net + eines der anderen Frameworks. Und da die Releases dieses Frameworks an Releases von Visual Studio gebunden sind, gibt es weniger Updates. Wenn Sie mit einem älteren VS arbeiten müssen, sind Sie an einen älteren MSTest gebunden.
Ich denke nicht, dass es sehr wichtig ist, welches der anderen Frameworks Sie verwenden. Es ist wirklich einfach, von einem zum anderen zu wechseln.
Ich persönlich benutze XUnit.Net oder NUnit, je nach den Vorlieben meiner Mitarbeiter. NUnit ist der Standard. XUnit.Net ist das schlankste Framework.
quelle
Erwägen Sie, MSTest durch ein anderes Testframework zu ergänzen, nicht zu ersetzen. Sie können die Visual Studio MSTest-Integration beibehalten und gleichzeitig die Vorteile eines umfassenderen Testframeworks nutzen.
Zum Beispiel benutze ich xUnit mit MSTest. Fügen Sie einen Verweis auf die Assembly xUnit.dll hinzu, und führen Sie einfach so etwas aus. Überraschenderweise funktioniert es einfach!
quelle
Suprisingly, it just works!
Sie haben gerade eine statische Funktion von einer anderen Assembly aufgerufen. Warum bist du überrascht, dass es funktioniert? Auch wenn Sie nur Aussagen benötigen, warum nicht eine speziell dafür hergestellte Baugruppe verwenden?Nunit funktioniert nicht gut mit Mixed-Mode-Projekten in C ++, also musste ich es löschen
quelle
Es ist keine große Sache im kleinen / persönlichen Maßstab, aber es kann schnell eine größere Sache im größeren Maßstab werden. Mein Arbeitgeber ist ein großer Microsoft-Shop, der sich aus mehreren Gründen nicht an Team System / TFS beteiligen kann / kann. Wir verwenden derzeit Subversion + Orcas + MBUnit + TestDriven.NET und es funktioniert gut, aber TD.NET zu bekommen war ein großer Aufwand. Die Versionsempfindlichkeit von MBUnit + TestDriven.NET ist ebenfalls ein großer Aufwand, und es ist nicht trivial, eine zusätzliche kommerzielle Sache (TD.NET) für die rechtliche Überprüfung und Beschaffung zu verwalten und zu verwalten. Mein Unternehmen ist wie viele andere Unternehmen mit einem MSDN-Abonnementmodell fett und zufrieden, und es ist einfach nicht daran gewöhnt, einmalige Beschaffungen für Hunderte von Entwicklern abzuwickeln. Mit anderen Worten, das vollständig integrierte MS-Angebot ist zwar definitiv nicht immer das beste Brot, aber meiner Meinung nach ein bedeutender Mehrwert.
Ich denke, wir bleiben bei unserem aktuellen Schritt, weil er funktioniert und wir den Buckel organisatorisch bereits überwunden haben, aber ich wünschte, MS hätte ein überzeugendes Angebot in diesem Bereich, damit wir unseren Entwicklungsstapel ein wenig konsolidieren und vereinfachen können.
quelle
Es ist keine große Sache, es ist ziemlich einfach, zwischen ihnen zu wechseln. Die Integration von MSTest ist auch keine große Sache, greifen Sie einfach zu testdriven.net.
Wie die vorherige Person sagte, wählen Sie einen spöttischen Rahmen, mein Favorit im Moment ist Moq.
quelle