Seit der Version 2 unterstützt Quarkus das sog. Continuous Testing. Dabei werden im Deveplopment Mode kontinuierlich die Tests des in der Entwicklung befindlichen Projekts durchgeführt.
Nehmen wir mal an, dass wir mit dem folgenden Maven-Kommando ein neues Quarkus-Demo-Projekt aufsetzen :
mvn io.quarkus.platform:quarkus-maven-plugin:2.2.3.Final:create \
-DprojectGroupId=de.gedoplan \
-DprojectArtifactId=quarkus-demo \
-DclassName="de.gedoplan.HelloEndpoint" \
-Dpath="hello"
Das Demoprojekt enthält dann im Main Classpath einen simplen REST Endpoint in der Klasse de.gedoplan.HelloEndpoint
sowie einen passenden Test im Test Classpath.
Starten wir nun im Projektverzeichnis quarkus-demo
den Development Mode:
mvn quarkus:dev
[INFO] Scanning for projects…
…
Listening for transport dt_socket at address: 5005
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2021-10-03 11:58:09,287 INFO [io.quarkus] (Quarkus Main Thread) quarkus-demo 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.2.3.Final) started in 5.277s. Listening on: http://localhost:8080
2021-10-03 11:58:09,291 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-10-03 11:58:09,297 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy, smallrye-context-propagation]
--
Tests paused
Press [r] to resume testing, [o] Toggle test output, [h] for more options>
In diesem Modus können nun bekanntlich Quellcode-Änderungen durchgeführt werden, die bei einem REST Call automatisch zu einem Hot Reload führen. Seit der 2er-Version lassen sich hierin zudem kontinuierlich Tests durchführen. Dieser Modus ist zunächst inaktiv und kann mit der Taste r
aktiviert werden:
Listening for transport dt_socket at address: 5005
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2021-10-03 12:02:26,886 INFO [io.quarkus] (Quarkus Main Thread) quarkus-demo 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.2.3.Final) started in 3.410s. Listening on: http://localhost:8080
2021-10-03 12:02:26,904 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-10-03 12:02:26,909 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy, smallrye-context-propagation]
--
All 1 test is passing (0 skipped), 1 test was run in 3415ms. Tests completed at 12:02:45.
Press [r] to re-run, [o] Toggle test output, [h] for more options>
Die Ausgabe ist natürlich in den üblichen Farben gehalten (wenn die Konsolenausgabe Farben erlaubt), sodass mit einem schnellen Blick der Teststatus erfasst werden kann: Grün – prima, rot – ups!
Das alleine ist schon sehr cool, aber es kommt noch besser: Bei einer Codeänderung werden nicht etwa sämtliche Tests des Projekts ausgeführt, was in realistischen Projekten recht viele sein könnten, sondern nur diejenigen, die von der Änderung betroffen sind. Dadurch bleibt die Teststatus-Ermittlung flüssig und wirklich kontinuierlich!
Weitere Informationen
Wir versorgen Sie gerne mit weiterem Input:
- Unser Expertenkreis Java ist eine regelmäßige Vortragsveranstaltung zu allem aus dem Java-Ökosystem. Melden Sie sich kostenfrei an unter https://gedoplan.de/java-events/.
- In die Tiefe gehen wir in unseren Seminaren (s. https://gedoplan.de), z. B.
- Zweimal im Jahr finden Sie in unserem Firmenmagazin GEDOPLAN aktuell Fachartikel zu den Themen, die uns bewegen. Fordern Sie die Print-Ausgabe an oder lesen Sie online unter https://gedoplan.de/publikationen/.
Dirk Weil, GEDOPLAN GmbH