Java >> Java Tutorial >  >> Java

Unit-Tests mit Spock Framework schreiben:Ein Gradle-Projekt erstellen

Das Spock Framework ist ein Test- und Spezifikations-Framework für Java- und Groovy-Anwendungen. Seine Website macht eine etwas gewagte Behauptung:

Was es von der Masse abhebt, ist seine schöne und ausdrucksstarke Spezifikationssprache.

Bevor wir überprüfen können, ob diese Behauptung wahr ist, müssen wir ein Beispielprojekt erstellen, das wir für diesen Zweck verwenden können.

Im vorherigen Teil dieses Tutorials wurde beschrieben, wie wir dies mit Maven tun können. Jetzt lernen wir, wie wir dies mit Gradle tun können.

Dieser Blogbeitrag beschreibt, wie wir ein Gradle-Projekt erstellen können, das die folgenden Anforderungen erfüllt:

  • Es muss „normale“ Unit-Tests unterstützen, die JUnit und Unit-Tests verwenden, die das Spock Framework verwenden.
  • Es muss die "normalen" Unit-Tests kompilieren und ausführen, die in src/test/java zu finden sind Verzeichnis.
  • Es muss die Groovy-Einheitentests kompilieren und ausführen, die in src/test/groovy zu finden sind Verzeichnis.
  • Es muss einen HTML-Testbericht erstellen, der die Testergebnisse unserer Komponententests beschreibt, die das Spock Framework verwenden.

Beginnen wir damit, die erforderlichen Abhängigkeiten abzurufen.

Erforderliche Abhängigkeiten abrufen

Wir können die erforderlichen Abhängigkeiten erhalten, indem wir die folgenden Abhängigkeiten in testCompile hinzufügen Konfiguration:

  • JUnit (Version 4.12) ist ein Framework, mit dem wir sowohl Unit- als auch Integrationstests schreiben können.
  • Spock Core (Version 1.0-groovy-2.4). Spock ist ein Test- und Spezifikations-Framework für Java- und Groovy-Anwendungen.
  • Groovy All (Version 2.4.4). Groovy ist eine dynamische Programmiersprache für die JVM.

Nachdem wir diese Abhängigkeiten in unsere build.gradle eingefügt haben Datei, sieht ihr Quellcode wie folgt aus:

dependencies {
    testCompile(
            'junit:junit:4.12',
            'org.codehaus.groovy:groovy-all:2.4.4',
            'org.spockframework:spock-core:1.0-groovy-2.4'
    )
}

Nachdem wir die erforderlichen Abhängigkeiten in unsere build.gradle eingefügt haben -Datei müssen wir Gradle konfigurieren, um unsere Komponententests zu kompilieren und auszuführen.

Kompilieren und Ausführen unserer Komponententests

Da unsere Komponententests sowohl Java- als auch Groovy-Programmiersprachen verwenden, müssen wir unsere Testquellen mithilfe des Groovy-Plug-ins kompilieren, das das Java-Plug-in erweitert und Unterstützung für Groovy-Projekte hinzufügt.

Wir können unseren Gradle-Build konfigurieren, indem wir diesen Schritten folgen:

  1. Wenden Sie das Groovy-Plugin an.
  2. Stellen Sie sicher, dass der Java-Compiler Code akzeptiert, der Java 1.8 verwendet.
  3. Stellen Sie sicher, dass die kompilierten Klassen mit Java 1.8 kompatibel sind.

Nachdem wir Gradle konfiguriert haben, um unsere Komponententests zu kompilieren und auszuführen, wird die Codequelle unserer build.gradle Datei sieht wie folgt aus:

apply plugin: 'groovy'

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    testCompile(
            'junit:junit:4.12',
            'org.codehaus.groovy:groovy-all:2.4.4',
            'org.spockframework:spock-core:1.0-groovy-2.4'
    )
}

Wir können jetzt unsere Komponententests kompilieren und ausführen, indem wir den folgenden Befehl an der Eingabeaufforderung ausführen:

gradle clean test

Wenn wir dies tun, sehen wir Folgendes:

  • Der compileTestJava Aufgabe wird aufgerufen. Diese Aufgabe kompiliert die Einheitentests, die in src/test/java gefunden werden Verzeichnis.
  • Der compileTestGroovy Aufgabe wird aufgerufen. Diese Aufgabe kompiliert die Komponententests, die in src/test/groovy gefunden werden Verzeichnis.
  • Der Test Task ruft alle Komponententests auf.

Die Ausgabe dieses Befehls sieht wie folgt aus:

> gradle clean test
:clean
:compileJava
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes
:compileTestJava
:compileTestGroovy
:processTestResources UP-TO-DATE
:testClasses
:test

BUILD SUCCESSFUL

Als letztes müssen wir Gradle konfigurieren, um einen HTML-Testbericht zu erstellen, der die Testergebnisse von Komponententests beschreibt, die das Spock Framework verwenden.

Erstellen eines HTML-Testberichts

Wenn wir unsere Einheitentests ausführen, erstellt Gradle einen HTML-Testbericht für build/reports/tests Verzeichnis. Der HTML-Bericht, der die Testergebnisse unserer Testklasse beschreibt, die das Spock Framework verwendet, sieht wie folgt aus:

Wenn wir mit diesem Bericht zufrieden sind, müssen wir nichts unternehmen. Wir können die Fahrt einfach genießen.

Wenn wir jedoch einen Testbericht erstellen möchten, der die Voraussetzungen und die erwarteten Ergebnisse unserer Testfälle beschreibt, müssen wir die Spock Reports Extension verwenden. Standardmäßig erstellt es einen HTML-Bericht für jede aufgerufene Spezifikation und eine Zusammenfassung, die alle aufgerufenen Spezifikationen auflistet.

Wir können diese Spock-Erweiterung verwenden, indem wir diesen Schritten folgen:

  1. Stellen Sie sicher, dass Gradle die Abhängigkeiten unseres Builds auflöst, indem Sie das JCenter Maven-Repository von Bintray verwenden.
  2. Fügen Sie die JAR-Datei der Spock Reports-Erweiterung zum Klassenpfad hinzu. Wir können dies tun, indem wir die spock-reports hinzufügen Abhängigkeit (Version 1.2.7) in die testRuntime Konfiguration.

Nachdem wir die Spock Reports Extension aktiviert haben, wird der Quellcode unserer build.gradle Datei sieht wie folgt aus:

apply plugin: 'groovy'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    jcenter()
}

dependencies {
    testCompile(
            'junit:junit:4.12',
            'org.codehaus.groovy:groovy-all:2.4.4',
            'org.spockframework:spock-core:1.0-groovy-2.4',
    )
    testRuntime(
            'com.athaydes:spock-reports:1.2.7'
    )
}

Wir können jetzt unsere Komponententests mit dem folgenden Befehl ausführen:

gradle clean test

Wenn wir unsere Komponententests ausführen, erstellt die Spock Reports-Erweiterung einen HTML-Testbericht für die build/spock-reports Verzeichnis. Der HTML-Bericht, der die Testergebnisse unserer Testklasse beschreibt, die das Spock Framework verwendet, sieht wie folgt aus:

Fassen wir zusammen, was wir aus diesem Blogbeitrag gelernt haben.

Zusammenfassung

Dieser Blogbeitrag hat uns drei Dinge gelehrt:

  • Wir wissen, wie wir die erforderlichen Abhängigkeiten mit Gradle erhalten können.
  • Wir können unsere Unit-Tests mit dem Groovy-Plug-in kompilieren und ausführen.
  • Wenn wir einen Testbericht erstellen wollen, der die Voraussetzungen und die erwarteten Ergebnisse unserer Testfälle beschreibt, müssen wir die Spock Reports Extension verwenden.

Der nächste Teil dieses Tutorials gibt eine Einführung in die Spock-Spezifikationen.

P.S. Sie können das Beispiel dieses Blogbeitrags von Github abrufen.


Java-Tag