BDD auf Java: Wie Sie Tests in Dokumentation verwandeln, die sogar Manager verstehen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist BDD und warum rettet es Ihr Projekt?

\n\n

Waren Sie schon einmal in der Situation, in der Entwickler sagen: "Die Logik funktioniert einwandfrei", und der Kunde antwortet: "Aber das ist überhaupt nicht das, was ich wollte!"? Kommt Ihnen das bekannt vor? Genau hier kommt BDD (Behaviour-Driven Development) ins Spiel – die verhaltensorientierte Entwicklung.

\n\n

BDD auf Java ist nicht nur ein modischer Begriff. Es ist eine Methodik, die die Grenze zwischen Geschäftsanforderungen und Code verwischt. Anstatt trockene technische Tests zu schreiben (wie bei TDD), schreiben Sie Szenarien in einer verständlichen menschlichen Sprache. Und ja, selbst Ihr Manager, der denkt, "Java sei eine Insel", kann sie lesen.

\n\n

Wie unterscheidet sich BDD von TDD? (Spoiler: Es ist nicht dasselbe)

\n\n

Viele verwechseln TDD (Test-Driven Development) und BDD. Lassen Sie es uns klarstellen:

\n\n
    \n
  • TDD: Sie schreiben einen Test, der fehlschlägt, dann schreiben Sie Code, um den Test zu bestehen. Der Fokus liegt auf der technischen Umsetzung.
  • \n
  • BDD: Sie beschreiben zuerst das Verhalten des Systems in Benutzerbegriffen. "Wenn der Benutzer auf die Schaltfläche klickt, macht das System dies und das." Der Fokus liegt auf dem Geschäftswert.
  • \n
\n\n

BDD verwendet Gherkin – eine Szenariosprache mit den Schlüsselwörtern Given, When, Then. Das sieht ungefähr so aus:

\n\n
Feature: Anmeldung im persönlichen Konto\n  Scenario: Erfolgreiche Anmeldung mit korrekten Daten\n    Given der Benutzer befindet sich auf der Anmeldeseite\n    When der Benutzer den Benutzernamen "admin" und das Passwort "12345" eingibt\n    Then sieht der Benutzer die Meldung "Willkommen!"\n
\n\n

Geben Sie zu, das liest sich wie eine Anleitung und nicht wie eine technische Dokumentation. Genau darin liegt die Stärke der verhaltensorientierten Entwicklung auf Java.

\n\n

Werkzeuge für BDD in Java: Das richtige Framework auswählen

\n\n

In der Java-Welt gibt es zwei Hauptakteure für BDD: Cucumber und JBehave. Vergleichen wir sie.

\n\n

Cucumber für Java: Der König des BDD

\n\n

Cucumber ist das beliebteste Framework. Es unterstützt Gherkin von Haus aus, integriert sich mit JUnit und TestNG und hat eine riesige Community. Wenn Sie neu in BDD Java sind, beginnen Sie mit Cucumber.

\n\n

JBehave: Alt, aber zuverlässig

\n\n

JBehave ist der "Großvater" des BDD. Es ist weniger beliebt, wird aber immer noch in Legacy-Projekten verwendet. Der Hauptunterschied: Szenarien werden in Textdateien geschrieben und Schritte über Annotationen @Given, @When, @Then verknüpft.

\n\n

Ich persönlich empfehle Cucumber – es hat eine bessere Dokumentation und mehr Beispiele. Aber wenn Sie an einem alten Projekt arbeiten, ist JBehave auch in Ordnung.

\n\n

Den ersten BDD-Test auf Java schreiben: Eine Schritt-für-Schritt-Anleitung

\n\n

Gehen wir von der Theorie zur Praxis über. Wir erstellen ein einfaches Maven-Projekt mit Cucumber. Ihre Aufgabe ist es, die Struktur zu verstehen, nicht nur den Code zu kopieren.

\n\n

Schritt 1: Abhängigkeiten hinzufügen

\n\n

Fügen Sie in pom.xml die folgenden Abhängigkeiten hinzu:

\n\n
<dependency>\n    <groupId>io.cucumber</groupId>\n    <artifactId>cucumber-java</artifactId>\n    <version>7.18.0</version>\n    <scope>test</scope>\n</dependency>\n<dependency>\n    <groupId>io.cucumber</groupId>\n    <artifactId>cucumber-junit-platform-engine</artifactId>\n    <version>7.18.0</version>\n    <scope>test</scope>\n</dependency>\n
\n\n

Schritt 2: Feature-Datei erstellen

\n\n

Erstellen Sie im Ordner src/test/resources die Datei login.feature:

\n\n
Feature: Benutzerauthentifizierung\n  Als registrierter Benutzer\n  möchte ich mich im System anmelden\n  um Zugang zu meinem persönlichen Konto zu erhalten\n\n  Scenario: Erfolgreiche Authentifizierung\n    Given der Benutzer hat die Anmeldeseite geöffnet\n    When der Benutzer den Benutzernamen "te                

Blogs

Buchempfehlungen