Java >> Java Tutorial >  >> Java

Erste Schritte mit Gradle:Integrationstests mit dem TestSets-Plugin

In meinem vorherigen Blogbeitrag wurde beschrieben, wie wir unserem Gradle-Build Integrationstests hinzufügen können.

Ein paar Tage, nachdem ich diesen Blogbeitrag veröffentlicht hatte, erfuhr ich, dass wir nicht alles von Grund auf neu machen müssen (danke David), weil wir unser Build-Skript vereinfachen können, indem wir das Gradle TestSets-Plug-in verwenden.

Dieser Blogbeitrag beschreibt, wie wir Integrationstests zu unserem Gradle-Build hinzufügen und unnötige Unordnung aus unserem build.gradle entfernen können Datei und erfüllen die in meinem vorherigen Blogbeitrag angegebenen Anforderungen.

Fangen wir an.

Anwenden des Gradle TestSets-Plugins

Bevor wir das Gradle TestSets-Plugin verwenden können, müssen wir es anwenden. Wir können dies tun, indem wir diesem zweistufigen Prozess folgen:

Zuerst , müssen wir die Abhängigkeiten unseres Build-Skripts konfigurieren. Wir können dies tun, indem wir diesen Schritten folgen:

  1. Konfigurieren Sie Gradle so, dass es das JCenter Maven-Repository von Bintray verwendet, wenn es die Abhängigkeiten unseres Build-Skripts auflöst.
  2. Fügen Sie die TestSets-Plugin-Abhängigkeit zum Klassenpfad hinzu Konfiguration.

Der relevante Teil unseres build.gradle Datei sieht wie folgt aus:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.4.5'
    }
}

apply plugin: 'application'
apply plugin: 'java'

Zweite , müssen wir das TestSets-Plugin anwenden. Nachdem wir dies getan haben, wird der relevante Teil unserer build.gradle Datei sieht wie folgt aus:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.4.5'
    }
}

apply plugin: 'application'
apply plugin: 'java'
apply plugin: 'org.unbroken-dome.test-sets'

Lassen Sie uns weitermachen und herausfinden, wie wir unserem Gradle-Build ein neues Testset hinzufügen können.

Hinzufügen eines neuen Testsets zu unserem Build

Wir können ein neues Testset namens integrationTest erstellen indem Sie das folgende Snippet zu unserem build.gradle hinzufügen Datei:

testSets {
    integrationTest
}

Nachdem wir dies getan haben, fügt das TestSets-Plugin unserem Gradle-Build die folgenden „Features“ hinzu:

  • Es fügt einen Quellsatz namens integrationTest hinzu zu unserem Aufbau. Das bedeutet, dass die Datei src/integrationTest/java Verzeichnis enthält den Quellcode unserer Integrationstests und die src/integrationTest/resources Verzeichnis enthält die Ressourcen unserer Integrationstests.
  • Es fügt unserem Build zwei neue Abhängigkeitskonfigurationen hinzu.
    • Die integrationTestCompile Die Abhängigkeitskonfiguration enthält die Abhängigkeiten, die zum Kompilieren unserer Integrationstests erforderlich sind. Es enthält auch alle Abhängigkeiten, die zum Kompilieren unserer Unit-Tests erforderlich sind.
    • Die integrationTestRuntime Die Abhängigkeitskonfiguration enthält die Abhängigkeiten, die benötigt werden, wenn unsere Integrationstests ausgeführt werden. Es enthält auch alle Abhängigkeiten, die zum Kompilieren unserer Integrationstests und zum Ausführen unserer Unit-Tests erforderlich sind.
  • Es fügt unserem Gradle-Build zwei neue Aufgaben hinzu:
    • Der Integrationstest Task führt unsere Integrationstests aus.
    • Das integrationTestJar Task wird unsere Integrationstests in eine JAR-Datei packen.

Es bleibt jedoch noch ein Problem. Die Anforderungen unseres Gradle-Builds besagen Folgendes:

  • Die Integrationstests müssen in src/integration-test/java gefunden werden Verzeichnis.
  • Die Ressourcen unserer Integrationstests müssen unter src/integration-test/resources gefunden werden Verzeichnis.

Mit anderen Worten, wir müssen den Verzeichnisnamen von integrationTest ändern zum integration-test . Wir können dies tun, indem wir den Wert von dirName angeben Eigentum. Wir können diesen Wert angeben, indem wir das folgende Snippet zu unserer build.gradle hinzufügen Datei:

testSets {
    integrationTest { dirName = 'integration-test' }
}

Fahren wir fort und fügen einige Abhängigkeiten zu unseren neuen Abhängigkeitskonfigurationen hinzu.

Deklaration der Abhängigkeiten unserer Integrationstests

Wir können jetzt Abhängigkeiten zum integrationTestCompile hinzufügen und integrationTestRuntime Abhängigkeitskonfigurationen. Da beispielsweise die Integrationstests unserer Beispielanwendungen AssertJ 3.0 verwenden, müssen wir den assertj-core hinzufügen Abhängigkeit von integrationTestCompile Aufbau. Nachdem wir dies getan haben, werden die dependencies Build-Skriptblock unseres build.gradle Datei sieht wie folgt aus:

dependencies {
    compile 'log4j:log4j:1.2.17'
    testCompile 'junit:junit:4.11'
    integrationTestCompile 'org.assertj:assertj-core:3.0.0'
}

Lassen Sie uns weitermachen und herausfinden, wie wir die Aufgabe konfigurieren können, die unsere Integrationstests ausführt.

Konfigurieren der Integrationstestaufgabe

Obwohl das Gradle TestSets-Plugin den integrationTest erstellt hat Als wir unser Testset erstellt haben, müssen wir einige Änderungen an seiner Konfiguration vornehmen, wenn wir die Anforderungen unseres Gradle-Builds erfüllen wollen.

Genauer gesagt müssen wir sicherstellen, dass Komponententests vor Integrationstests ausgeführt werden und dass Integrationstests ausgeführt werden, wenn wir den Build aufrufen Aufgabe. Wir können dies folgendermaßen tun:

  1. Stellen Sie sicher, dass unsere Integrationstests vor der Prüfung ausgeführt werden Aufgabe und dass die Prüfung Task schlägt den Build fehl, wenn es fehlgeschlagene Integrationstests gibt.
  2. Stellen Sie sicher, dass unsere Komponententests vor unseren Integrationstests ausgeführt werden. Dies garantiert, dass unsere Unit-Tests auch dann ausgeführt werden, wenn unsere Integrationstests fehlschlagen.

Wir können diese Konfigurationsänderungen vornehmen, indem wir unserer build.gradle die folgenden Zeilen hinzufügen Datei:

check.dependsOn integrationTest
integrationTest.mustRunAfter test

Fahren wir fort und finden heraus, wie wir unsere Einheiten- und Integrationstests ausführen können.

Durchführung unserer Einheiten- und Integrationstests

Wir haben jetzt ein neues Testset erstellt und die Aufgabe konfiguriert, die unsere Integrationstests ausführt. Das bedeutet, dass wir endlich sowohl Unit- als auch Integrationstests durchführen können. Die Anforderungen unseres Builds besagen, dass wir in der Lage sein müssen, nur Einheitentests, nur Integrationstests oder alle Tests auszuführen.

Zuerst , wenn wir nur Komponententests ausführen möchten, können wir eine dieser beiden Optionen verwenden:

  • Wir können unsere Einheitentests ausführen, indem wir den folgenden Befehl ausführen:gradle clean test an der Eingabeaufforderung.
  • Wir können unseren Build ausführen und Integrationstests ausschließen, indem wir den folgenden Befehl ausführen:gradle clean build -x integrationTest an der Eingabeaufforderung.

Zweite , wenn wir nur Integrationstests ausführen möchten, können wir eine der folgenden Optionen auswählen:

  • Wir können unsere Integrationstests ausführen, indem wir den Befehl ausführen:gradle clean integrationTest an der Eingabeaufforderung.
  • Wir können unseren Build ausführen und Komponententests ausschließen, indem wir den folgenden Befehl ausführen:gradle clean build -x test an der Eingabeaufforderung.

Dritter , wenn wir alle Tests ausführen möchten, können wir eine dieser beiden Optionen verwenden:

  • Wir können unsere Einheiten- und Integrationstests ausführen, indem Sie den folgenden Befehl ausführen:gradle clean test integrationTest an der Eingabeaufforderung.
  • Wir können unseren Build ausführen, indem wir den Befehl ausführen:gradle clean build an der Eingabeaufforderung.

Wenn wir unsere Tests ausführen, erstellt Gradle die HTML-Berichte unserer Einheiten- und Integrationstests in den folgenden Verzeichnissen:

  • Der build/reports/tests/integrationTest Verzeichnis enthält den HTML-Bericht, der die Testergebnisse unserer Integrationstests enthält.
  • Der Build/Berichte/Tests/Test Verzeichnis enthält den HTML-Bericht, der die Testergebnisse unserer Komponententests enthält.

Fahren wir fort und fassen zusammen, was wir aus diesem Blogbeitrag gelernt haben.

Zusammenfassung

Dieser Blogbeitrag hat uns vier Dinge gelehrt:

  • Wenn wir eine neue Testreihe erstellen, erstellt das Gradle TestSets-Plugin eine neue Quellgruppe, erstellt Abhängigkeitskonfigurationen für die erstellte Testreihe und erstellt die Aufgabe, die die aus der erstellten Testreihe gefundenen Tests ausführt.
  • Wir können den Verzeichnisnamen des erstellten Testsatzes konfigurieren, indem wir den Wert von dirName festlegen Eigentum.
  • Wir können die Reihenfolge konfigurieren, in der unsere Aufgaben aufgerufen werden.
  • Wir können Aufgaben ausschließen, indem wir -x verwenden Befehlszeilenoption.

P.S. Sie können die Beispielanwendung dieses Blogbeitrags von Github herunterladen.


Java-Tag