Was sind die Unterschiede zwischen NUnit und xUnit.net ? Was bringt es, zwei davon zu entwickeln, nicht nur einen?
Ich habe gelesen, dass xUnit vom Erfinder von NUnit entwickelt wird:
xUnit.net ist ein Unit-Test-Tool für .NET Framework. Geschrieben vom ursprünglichen Erfinder von NUnit
Andererseits:
NUnit ist ein Unit-Testing-Framework für alle .NET-Sprachen. Die aktuelle Produktionsversion, Version 2.6, ist die siebte Hauptversion dieses xUnit-basierten Unit-Test-Tools
Wo ist also die Wahrheit?
Antworten:
Zum Zeitpunkt des Schreibens dieser Antwort ist die neueste NUnit-Version v3.5 und xUnit.net v2.1.
Beide Frameworks sind fantastisch und unterstützen paralleles Testen (auf unterschiedliche Weise). NUnit gibt es seit 2002, es ist weit verbreitet, gut dokumentiert und hat eine große Community, während xUnit.net moderner, TDD-adhärenter, erweiterbarer und auch in der .NET Core-Entwicklung im Trend liegt. Es ist auch gut dokumentiert.
Darüber hinaus ist der Hauptunterschied, den ich bemerkt habe, die Art und Weise, wie xUnit.net die Testmethoden ausführt. In NUnit haben wir also eine Testklasse und eine Reihe von Testmethoden. NUnit erstellt eine neue Instanz der Testklasse und führt dann alle Testmethoden von derselben Instanz aus. Während xUnit.net für jede der Testmethoden eine neue Instanz der Testklasse erstellt. . Daher kann man keine Felder oder Eigenschaften verwenden, um Daten zwischen Testmethoden auszutauschen, was eine schlechte Praxis ist, da unsere Testmethoden voneinander abhängig wären, was in TDD nicht akzeptabel ist. Wenn Sie also xunit.net verwenden, können Sie sicher sein, dass Ihre Testmethoden vollständig isoliert sind.
Wenn Sie jedoch bereit sind, einige Daten für Ihre Testmethoden freizugeben, können Sie dies mit xUnit tun. Daher sind standardmäßig alle Testmethoden vollständig isoliert. Sie können diese Isolierung jedoch in bestimmten Fällen absichtlich aufheben. Ich mag diese Einstellung, deshalb mag ich sie besser.
quelle
Sie verwechseln den Namen eines einzelnen Tools ( xUnit.net ) mit dem Namen einer ganzen Klasse von Unit-Testing-Frameworks ( xUnit , das x bezieht sich auf eine Sprache / Umgebung, z. B. JUnit, NUnit, ...).
quelle
Ein Vorteil von xUnit ist, dass es Tests in verschiedenen Klassen findet. es läuft sie parallel . Dies kann viel Zeit sparen, wenn Sie viele Testfälle haben.
Sie können dies natürlich deaktivieren oder den Betrieb steuern (Anzahl der Threads, Threads pro Klasse, Tests pro Assembly usw.).
Schauen Sie sich diese Beispiellösung mit zwei Testprojekten an, eines mit xUnit und das andere mit NUnit .
Weitere Informationen zu parallelen Tests in xUnit finden Sie hier .
quelle
xUnit-Vorteile:
xUnit folgt einem neuen Konzept, indem die alten Methoden "SetUp" und "TearDown" vermieden werden. Es zwingt uns, IDisposable und einen Konstruktor zu verwenden, wie wir es als .NET-Entwickler tun sollten. Auch xUnit hat ein klares Konzept für die gemeinsame Nutzung von Kontexten.
xUnit Nachteile:
Die Verfügbarkeit zum Abrufen des Testkontexts ist noch nicht implementiert.
quelle