web-dev-qa-db-ger.com

Unit-Test, NUnit oder Visual Studio?

Ich verwende Visual Studio (manchmal Nachschärfen), um meinen Gerätetest durchzuführen.

Ich habe von NUnit gehört, aber ich weiß nicht viel darüber ...

Soll ich mich darum kümmern? Kann es etwas Besseres bieten als Visual Studio?

Sollte ich NUnit verwenden und warum?

112
Tim

NUnit hat gegenüber MS-Test nur wenige Vorteile

  1. Suite-Attribut - kann Tests zusammenfassen und separat ausführen (z. B. nützlich für große Projekte mit schnellen und langsamen Tests)
  2. Lesbare Assert-Methode, z. Assert.AreEqual(expected, actual) vs Assert.That(actual, Is.EqualTo(expected))
  3. NUnit hat häufige Versionsaktualisierungen - MS-Test hat nur eine Version pro VS-Version.
  4. Viele integrierte Läufer, darunter Resharper und TestDriven.NET
  5. Erwartete Ausnahmebedingungsbestätigung - kann mit dem Attribut in NUnit durchgeführt werden, muss jedoch mit Try-Catch in MS-Test ausgeführt werden
  6. [TestCase]! NUnit erlaubt parametrisierte Tests.
94
Elisha

Aus meiner jetzigen Perspektive (nach 8 Monaten Entwicklung mit durchschnittlich 10 Entwicklern) würde ich aus folgenden Gründen raten gegen MSTest verwenden

  • Der Rahmen an sich ist ziemlich langsam. Ich meine nicht den Testcode, den Sie schreiben. Sie schreiben - das steht unter Ihrer Kontrolle. Ich meine, das Framework, das diese Tests ausführt, ist langsam, ob es eine Testsoftware-Suite, einzelne Tests usw. ausführt.
  • Die Notwendigkeit, eine Test-Metadaten-Datei aufzubewahren, die immer zu Komplikationen führt, wenn mehrere Entwickler daran arbeiten (z. B. die Metadaten.). Jede andere Testsuite benötigt keine Metadatendatei. Es ist eine Art von Schön, Ihre Tests zu organisieren, aber Sie Können dasselbe durch Namespaces, Klassen und Methodennamen erreichen.
  • Continuous Integration: Wenn Sie Unit-Tests auf Ihrem Build-Computer ausführen möchten, müssen Sie Visual Studio auf diesem Computer installieren.

Mit anderen Worten, wenn ich mich vor 8 Monaten noch einmal entscheiden müsste, würde ich wahrscheinlich NUnit nehmen. Ich habe möglicherweise keinen integrierten Testergebnisbericht, aber Entwickler würden nahtlosere Testerfahrung haben.

71
flq

Hier ist meine Erfahrung mit MS Test

  • Wir führen MS Test mit rund 3800 Tests durch.
  • Es dauert sehr lange, bis die Tests ausgeführt werden, was bei einzelnen Tests schmerzhaft ist.
  • Für die Durchführung der Tests werden ca. 1 GB Speicher benötigt. Nein, es liegt nicht an Speicherlecks in unseren Tests. Häufig stoßen wir auf OutOfMemoryExceptions.
  • Da es so viele Ressourcen benötigt, führen wir die Tests nun aus Batch-Dateien aus. Also wozu ist die ganze Integration gut?
  • Es ist fehlerhaft und instabil:
    • Wenn Sie beispielsweise das Attribut [Ignorieren] aus einem Test entfernen, wird es nicht erkannt, da es irgendwo Informationen über Tests speichert. Sie müssen die Testliste aktualisieren, wodurch das Problem manchmal gelöst wird, oder Sie müssen VS neu starten.
    • Es kopiert zufällig keine Referenz-Assemblys in das Out-Verzeichnis.
    • Bereitstellungselemente (zusätzliche Dateien, die verwendet werden sollen) funktionieren einfach nicht richtig. Sie werden zufällig ignoriert.
  • In den Dateien vsmdi und testrunconfig gibt es verborgene (im Testcode nicht sichtbare) Informationen. Wenn Sie sich nicht darum kümmern, funktioniert es möglicherweise nicht.
  • Funktionell mag es mit NUnit vergleichbar sein, aber es ist sehr teuer, wenn Sie die VS-Tester-Edition in Betracht ziehen.

Zusatz: Wir haben jetzt einige weitere Tests, können nicht einmal sagen, wie viele. Aufgrund von OutOfMemoryExceptions und anderen Instabilitätsproblemen ist es nicht mehr möglich, sie alle in Visual Studio auszuführen. Wir führen die Tests von Skripten aus. Das Anzeigen der Testergebnisse in Visual Studio wäre einfach, aber wenn die Lösung geöffnet ist, stürzt VS (jedes Mal) ab. Wir müssen also die fehlgeschlagenen Tests mit der Textsuche suchen. Ein integriertes Werkzeug bietet keinen Vorteil mehr.


Ein weiteres Update : Wir verwenden jetzt VS 2013. Viele Dinge haben sich geändert. Sie haben den MS Test-Testläufer zum dritten Mal seit unserem Start neu geschrieben. Dies führte zu einer Reihe von Neuerungen, aber keine der neuen Versionen verbesserte sich. Wir sind froh, dass wir die ausgefallenen Funktionen von MS Test nicht verwendet haben, da sie alle nicht mehr unterstützt werden. Es ist wirklich schade. Wir verwenden immer noch Skripts, um alle Komponententests zu erstellen und auszuführen, da dies einfacher ist. Das Starten von Tests in Visual Studio dauerte einige Minuten (Zeitmessungen nach dem Kompilieren bis zum ersten Test). Sie beheben es wahrscheinlich mit einem Update und dies könnte ein spezifisches Problem unseres Projekts sein. Resharper ist jedoch viel schneller, wenn dieselben Tests ausgeführt werden.

Fazit : MS Test ist zumindest in Kombination mit Resharper sinnvoll. Und ich hoffe, dass sie endlich herausfinden, wie der Testläufer geschrieben werden sollte, und dass diese Änderungen nicht beim nächsten Update von Visual Studio vorgenommen werden.

48

NUnit kann in Kombination mit Visual Studio verwendet werden. Es ist ein Rahmen, kein separates Programm. Sie könnten sich also darum kümmern, ob es Ihnen passt :).

alt text http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=nunitit&DownloadId=61802

"Nach der Installation des Plugins finden Sie ein neues Untermenü unter dem Menü" Tools "."

Siehe http://nunitit.codeplex.com/ für weitere Informationen zum Importieren.

Auch bei der Suche nach SO kann viel gefunden werden. Dieses Thema listet beispielsweise die Vorteile von NUnit gegenüber MS-Standardtests auf.

18
bastijn

Der größte Vorteil von MS-Test gegenüber NUnit ist, dass MS-Test mithilfe von Reflection Scheinobjekte erzeugen kann. Ich fand es sehr nützlich

5
Maciej

NUnit arbeitet mit der Standard Edition von VS.

3

NUnit ist ein Unit-Test-Framework, das auch von resharper unterstützt wird. Ich denke, Sie verwenden das Unit-Test-Framework von Microsoft, daher ist NUnit nur eine Alternative zu Microsofts Produkt;)

Hier ist der Link zur Homepage von NUnit: http://nunit.org/index.php

1
Oliver Hanappi

Ich bin nicht sicher bei anderen, aber NUnit bietet Nice GUI und Console für die Ausführung Ihrer Unit-Tests. Außerdem können Sie einen Bericht über das Ergebnis der NUnit-Test-Ausführung generieren, aus dem hervorgeht, ob der Test fehlgeschlagen ist oder bestanden hat und wie viel Uhr es war nehmen Sie für Ihren Gerätetest

1
Vinay Pandey

In NUnit werden Tests nicht parallel ausgeführt. Es scheint, dass alle Tests in einem einzigen Thread ausgeführt werden. In MSTest wird jeder Test in einem separaten Thread instanziiert. Dadurch werden die Läufe verschachtelt. Wenn Test A für seinen Erfolg von Test B abhängt, schlägt er wahrscheinlich fehl, da Test B wahrscheinlich läuft, wenn Test A läuft.

0
Mourad Samy