Wie unterscheidet sich Gurke von JUnit?

8

Kann mir jemand den Unterschied erklären zwischen Gurke und Junit

Nach meinem Verständnis werden beide zum Testen von Java-Code verwendet, obwohl ich mir des Unterschieds nicht sicher bin?

Sind das einfach Differenz-Implementierungen der gleichen Testsuite oder zielen darauf ab, verschiedene Dinge zu testen?

    
RK . N 15.10.2014, 11:39
quelle

3 Antworten

17

Gurke und JUnit sind verschieden und lösen verschiedene Dinge.

Cucumber ist ein BDD-Framework (Behavior Driven Design), das "Geschichten" oder Szenarien in menschenlesbaren Sprachen wie Englisch erstellt und diesen lesbaren Text in einen Softwaretest umwandelt.

Hier ist ein Beispiel Gurkengeschichte:

Gurke wird dann wissen, wie man diesen Text in einen Softwaretest verwandelt, um sicherzustellen, dass die Software wie beschrieben funktioniert. Die Ausgabe wird Ihnen sagen, ob die Geschichte tatsächlich ist, was die Software macht und wenn nicht, was anders war:

Hier ist der Code festgelegt, um den Gurkentest bestehen zu lassen:

Dies macht eine so genannte "ausführbare Spezifikation", mit der Sie alle von Ihrer Software unterstützten Funktionen dokumentieren können. Dies unterscheidet sich von der normalen Dokumentation, denn ohne den entsprechenden Test weiß jemand, der das Dokument liest, nicht, ob die Dokumentation aktuell ist.

Weitere Vorteile von ausführbaren Spezifikationen:

  • Nicht-Programmierer können die Tests lesen und verstehen
  • Nicht-Programmierer können die Tests schreiben , da sie in einfachem Englisch sind.

BDD-Ergebnisse und ausführbare Spezifikationen sind sehr hoch. Sie decken die allgemeinen Merkmale und vielleicht einige Randfälle als Beispiele ab, aber nicht jede mögliche Bedingung oder jeden Codepfad. BDD-Tests sind auch "Integrationstests", da sie testen, wie alle Ihre Code-Module zusammenarbeiten, aber sie testen nicht alles gründlich.

Hier kommt JUnit ins Spiel.

JUnit ist ein untergeordnetes "Komponententest" -Tool, mit dem Entwickler jeden möglichen Codepfad in ihrem Code testen können. Jedes Modul Ihres Codes (oder Klassen oder sogar Methoden) wird isoliert getestet. Es ist viel niedriger als ein BDD-Framework. Mit dem gleichen Rechenbeispiel wie das Gurken-Beispiel würden JUnit-Tests viele verschiedene Berechnungsbeispiele und ungültige Eingaben testen, um sicherzustellen, dass das Programm korrekt reagiert und die Werte korrekt berechnet.

Ich hoffe, das hilft

    
dkatzel 15.10.2014, 14:06
quelle
1

Ich denke, Gurke wird mehr für Integrationstests verwendet, während JUnit eher in Verhaltenstests verwendet wird. Außerdem ist die Cucumber-Syntax genauer als JUnit, aber viel komplexer. Hier sehen Sie ein Beispiel für einen Gurken-Test:

%Vor%

Sie können sehen, dass JUnit einfacher, aber nicht unbedingt weniger leistungsfähig ist:

%Vor%

Ich hoffe, es hilft,

Clemencio Morales Lucas.

    
Clemencio Morales Lucas 15.10.2014 11:47
quelle
0

Gurke ist, in der Sie BDD-verhaltensgesteuerte Entwicklung durchführen können. So etwas wie du kannst deinen funktionalen Anwendungsfall in Gurkengeschichte umwandeln. In diesem Sinne können Sie auch Cucumber als DSL für das Functional Use Case Document verwenden.

JUnit auf der anderen Seite ist für Komponententests, was eine Methode in Java wäre. Eine Anwendung kann also ein Unit-Test (selten aber auch) sein, um einen Inigrationstest oder einen vollständigen Systemtest durchzuführen, das ist Ihr erster Fall Gurke. Unit Test wird nur Unit Test sein.

    
manocha_ak 15.10.2014 11:47
quelle

Tags und Links