Vor ein paar Tage ist eine neue Version veröffentlich worden. Dann mal ein Quicktest.
Was ist neu? Das gibt es hier.
Ergebnis des Quicktest: „JUnit 5 in Version 5.10.2 veröffentlicht“ weiterlesen
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, KI, Statistik, Krypto und Blockchain
Vor ein paar Tage ist eine neue Version veröffentlich worden. Dann mal ein Quicktest.
Was ist neu? Das gibt es hier.
Ergebnis des Quicktest: „JUnit 5 in Version 5.10.2 veröffentlicht“ weiterlesen
In der Regel soll ja nur eine assertion pro Testmethode enthalten sein. Manchmal gibt es aber doch sinnvolle UseCases, dann kann man die assertAll verwenden.
Die assertAll-Methode in JUnit 5 wird verwendet, um mehrere Assertions innerhalb einer Testmethode zu gruppieren. „assertAll in Java“ weiterlesen
Diese JRE Enum gibt es auch schon seit 5.1 in JUnit 5.
Tests sollen eigentlich nicht an der Java Version hängen. Aber manchmal braucht man sie doch. „Java Runtime Environment Conditions mit JUnit 5 mit ua. EnabledForJreRange“ weiterlesen
Unterstriche in JUnit 5 Test-Methoden und Klassen können auch per Default automatisch für alle Tests nach Leerzeichen konvertiert werden. Es sieht auch gleich besser aus:
Dazu einfach im src/test/resources Verzeichnis die Datei
junit-platform.properties anlegen mit diesem Eintrag: „Unterstriche in JUnit 5 Tests automatisch nach Leerzeichen konvertieren“ weiterlesen
Zum Wochenende mal ein kleines Quiz. Läuft der Test grün oder rot?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; /** * Kleines Quiz am Freitag. * * @author Thomas Wenzlaff * */ class Quiz42 { private static void is42(String auswertung) { if (auswertung.startsWith("42")) { auswertung = "0815"; } else { auswertung = "4711"; } } @Test void isStart42Test() { String auswertung = "4212345"; Quiz42.is42(auswertung); assertEquals("4212345", auswertung); // Ist der Test grün oder rot? System.out.println("Das Ergebnis ist: " + auswertung); } } |
Die Lösung … „Rot oder Grün, das ist hier die Frage“ weiterlesen
Vor zwei Stunden wurde eine neue ArchUnit 0.0.22 veröffentlicht. Dann mal gleich ein Quicktest. Memory leak ist nun gefixt. Und es können Unterstriche durch Leerzeichen in Testnamen ersetzt werden:
1 2 3 |
@AnalyzeClasses(packages = "de.wenzlaff.package") @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) public class SomeTestClass { ... } |
Warum wird in JUnit 5-Test kein public mehr verwendet? „Less is more“ sagt das JUnit-5 Team und die Testklassen liegen ja eh meistens im gleichen (Test) Package. Auch ist so eine besser Kapselung möglich.
Gestern die neue Version von ArchUnit 0.19.0 veröffentlicht. Dann mal ein Quicktest: … „ArchUnit in Version 0.19.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain“ weiterlesen
Seit JUnit 5.1 gibt es das OS Enum. Mit der können leicht Tests in Abhängigkeit des OS durchgeführt werden. Es werden die folgenden Betriebssysteme unterstüzt:
Also nur die Methode z.B. mit der @EnabledOnOs(OS.MAC) Annotation versehen, und der Test läuft nur auf dem Mac 🙂 oder nicht dann mit @DisabledOnOs(OS.MAC): … „Betriebssystem abhängige Tests 🙁 – EnabledOnOs oder DisabledOnOs für JUnit 5“ weiterlesen
Auf der Terrasse sitzen geht wegen 0,5 Meter Schnee nicht
deshalb Ripemd-160 JUnit Test mit eine Millionen check implementiert. … „Auf der Terrasse sitzen geht wegen 0,5 Meter Schnee nicht, deshalb Ripemd-160 eine Millionen check“ weiterlesen
JUnit und auf Maven Central JUnit 5.7.0
Vor zwei Tagen wurde die neue JUnit Version 5.6.0 veröffentlicht.
Also die BOM aktuallisieren:
1 2 3 4 5 6 |
<dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.6.0</version> <type>pom</type> </dependency> |
Und ein kleiner Test mit zwei Projekten: „Quicktest: JUnit 5.6.0 – „Freut euch immer““ weiterlesen
Da heute ein arbeitsfreier Tag ist, schon mal eine kleine Vorbereitung („ARBEIT“) für den Einsatz im Projekt ab Montag. Da wollen wir JSON Objekte verwenden. Für die JSON Erzeugung mit Java gibt es viele Möglichkeiten und Libs. Hier mal ein kleines Beispiel mit der 68 kB großen json.org Lib.
Zuerst in der pom.xml die Lib eintragen:
1 2 3 4 5 |
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20190722</version> </dependency> |
und dann einen kleine JUnit 5 Test.
1 2 3 4 5 6 7 8 9 10 11 12 |
@Test void kleinerJsonTest() { JSONObject json = new JSONObject(); json.put("name", "Wenzlaff"); json.put("vorname", "Thomas"); json.put("pin", 123456); // {"pin":123456,"vorname":"Thomas","name":"Wenzlaff"} assertEquals("{\"pin\":123456,\"vorname\":\"Thomas\",\"name\":\"Wenzlaff\"}" + "", json.toString()); } |
Also einfach ein JSONObject Objekt erstellen und mit put die Key und Value Werte eingeben. Für die put Methode gibt es viele Möglichkeiten: „Wie kann JSON in Java „schnell“ erzeugt werden?“ weiterlesen
Warum wird beim ausführen dieses JUnit 5 Tests die Fehlermeldung angezeigt, das kein Test vorhanden ist?
Es ist nicht die fehlende @Test Annotation, die wird bei einem @ParameterizedTest nicht gebraucht.
Die Lösung …
„Rätsel des Tages: Warum läuft der JUnit 5 Test nicht und zeigt eine Message Box an?“ weiterlesen
In Eclipse kann man leicht die Testabdeckung visualisieren.
Wenn man z.B. einen JUnit Test über den Menüpunkt „Coverage As – JUnit Test“ ausführt:
Alle Zeilen die grün sind, wurden durchlaufen: „Eclipse Quickie: Testabdeckung anzeigen mit „Coverage As““ weiterlesen
Wie können die Testmethoden einer Klasse automatisch in alphabetischer Reihenfolge ausgeführt werden? Ab JUnit 5.4 geht das mit der Annotation @TestMethodOrder
Es wird nur die @TestMethodOrder(MethodOrderer.Alphanumeric.class) Annotation an der jeweiligen Test-Klasse benötigt. Mit dem Alphanumeric wird die Reihenfolge auf alphabetischer gesetzt. „JUnit Quickie: Wie können die Testmethoden einer Klasse automatisch in alphabetischer Reihenfolge ausgeführt werden?“ weiterlesen
Normal sollte die Testreihenfolge ja nicht festgelegt werden. Da eine Test-Methode nicht von einer anderen abhängig sein sollte.
Manchmal wird das aber dennoch benötigt. Das geht jetzt ab JUnit 5.4 ganz einfach mit der @Order Annotation.
Hier eine Beispiel Klasse. „JUnit Tests nun mit Methoden Reihenfolge via @Order Annotation möglich“ weiterlesen
Also mal testen ob alle läuft? Kleine Änderung in der pom.xml
1 2 3 4 |
<junit.version>4.12</junit.version> <junit.jupiter.version>5.4.0</junit.jupiter.version> <junit.vintage.version>5.4.0</junit.vintage.version> <junit.platform.version>1.4.0</junit.platform.version> |
Dann mal zwei Projekt umstellen. Siehe da, die Buildpipeline laufen auch noch wie erwartet:
und die auch „Letzte Woche wurde das JUnit 5.4.0 Release veröffentlicht“ weiterlesen