Testautomatisierung mit Selenium, Maven, Cucumber und Java

Das Einrichten eines Testautomatisierungsprojekts mit Selenium, Maven, Cucumber und Java erfordert mehrere Schritte und die sorgfältige Konfiguration verschiedener Komponenten. Dieser Leitfaden führt Sie durch den gesamten Prozess, von der Einrichtung Ihrer Entwicklungsumgebung bis zum Schreiben und Ausführen Ihrer ersten Tests.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Tools in Ihrer Entwicklungsumgebung installiert sind:

  • Java Development Kit (JDK) - Mindestens Java 8.
  • Apache Maven - Für das Projektmanagement und den Build-Prozess.
  • Ein integrierte Entwicklungsumgebung (IDE) Ihrer Wahl, z.B. IntelliJ IDEA oder Eclipse.
  • WebDriver für den Browser Ihrer Wahl (z.B. ChromeDriver für Google Chrome).

Schritt 1: Maven-Projekt Erstellen

  1. Neues Projekt anlegen: Erstellen Sie ein neues Maven-Projekt in Ihrer IDE.
  2. pom.xml konfigurieren: Öffnen Sie die pom.xml -Datei und fügen Sie die notwendigen Abhängigkeiten für Selenium, Cucumber und JUnit hinzu. Beispiel:

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>[Selenium-Version]</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>[Cucumber-Version]</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>[Cucumber-Version]</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>[JUnit-Version]</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Schritt 2: Projektstruktur Organisieren

Organisieren Sie Ihr Projekt, indem Sie die notwendigen Verzeichnisse erstellen. Ein gängiges Layout könnte folgendermaßen aussehen:

  • src/test/java - Für Testcode.
  • src/test/resources - Für Cucumber Feature-Dateien.

Schritt 3: Cucumber Feature-Datei Schreiben

  1. Im Verzeichnis src/test/resources erstellen Sie einen Ordner (z.B. features) für Ihre Feature-Dateien.
  2. Innerhalb dieses Ordners erstellen Sie eine .feature -Datei und definieren Ihr erstes Szenario. Beispiel für eine simple Feature-Datei:

Feature: Google Suche
  Szenario: Erfolg bei der Suche nach "Wikipedia"
    Gegeben sei, dass ich Google geöffnet habe
    Wenn ich nach "Wikipedia" suche
    Dann sollte das erste Ergebnis "Wikipedia – Die freie Enzyklopädie" sein

Schritt 4: Step Definitions und Test Runner Erstellen

  1. Step Definitions: Erstellen Sie Java-Klassen in src/test/java für Ihre Schrittdefinitionen. Hier werden die Schritte aus Ihrer Feature-Datei in tatsächlichen Code umgesetzt.
  2. Test Runner: Erstellen Sie eine weitere Java-Klasse als Ihren Cucumber Test Runner. Dieser spezielle Test Runner wird mit Annotations konfiguriert, um Cucumber zu sagen, wo die Feature-Dateien und Schrittdefinitionen zu finden sind.

Beispiel für einen Test Runner:

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/features", glue = "dein.paketname.hier")
public class TestRunner {
}

Schritt 5: Tests Schreiben und Ausführen

  1. Tests Schreiben: Implementieren Sie die in den Schrittdefinitionen definierten Methoden, um die in den Cucumber-Features beschriebenen Aktionen mithilfe von Selenium durchzuführen.
  2. Tests Ausführen: Sie können Ihre Tests direkt aus Ihrer IDE heraus ausführen oder über die Kommandozeile mit Maven: mvn test

Abschluss

Sie haben nun ein grundlegendes Setup für ein Testautomatisierungsprojekt mit Selenium, Maven, Cucumber und Java. Von hier aus können Sie weitere Testszenarien hinzufügen, die Struktur Ihres Projekts erweitern und komplexere Testfälle entwickeln. Wichtig ist, dass Sie regelmäßig Ihren Code refaktorisieren und die Best Practices für Testautomatisierung und Code-Design befolgen.