Eben ist die neue Version JUnit 5.9.0 M1 veröffentlicht worden. Dann mal ein Quicktest. Ergebnis alles noch grün:
Was gibt es Neues? „Quicktest JUnit 5.9.0 M1 alles GRÜN“ weiterlesen
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Krypto und Blockchain
Eben ist die neue Version JUnit 5.9.0 M1 veröffentlicht worden. Dann mal ein Quicktest. Ergebnis alles noch grün:
Was gibt es Neues? „Quicktest JUnit 5.9.0 M1 alles GRÜN“ weiterlesen
Manchmal braucht man anonymisierte Testdaten. Ob nun im Json, CSV, XML, Excel, SQL oder sonstigen Format.
Anonymisierte Daten sind Informationen, die sich nicht auf eine bestimmte oder bestimmbare natürliche Person bzw. Gruppe beziehen lassen (Erwägungsgrund 26, DSGVO). Anonymisierung bedeutet also, das eine Person nicht mehr identifizierbar ist. Die Grundsätze des Datenschutzes gelten für diese Art der Daten nicht, d.h. anonyme Daten dürfen jederzeit weitergegeben werden.
Es gibt da viele Generatoren, heute stelle ich mal einen Online-Generator vor. Den mockaroo.com. Wir wollen Json Daten für eine Krankenhausanwendung erstellen. Sie soll ca. so aussehen: … „Online-Testdatengenerator für Json, XML, SQL, Excel, REST…“ 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 { ... } |
Heute ist eine neue Version von JUnit 5 veröffentlich worden. Wenn das kein Grund für ein Quicktest ist:
Ja es läuft noch. Mal was anderes, ein Phyton Test für ein Smart-Contract auf der Ethereum-Blockchain:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from brownie import Gehirn, accounts def test_deploy(): account = accounts.load("freeaccount") gehirn = Gehirn.deploy({"from": account}) ini_iq = gehirn.retrieve() expected = 0 assert ini_iq == expected def test_update(): account = accounts.load("freeaccount") gehirn = Gehirn.deploy({"from": account}) expected = 15 ini_iq = gehirn.store(expected, {"from": account}) assert expected == gehirn.retrieve() |
Und hier der dazu passende Smart-Contract mit Solidity: „Quicktest zur heute veröffentlichen neuen JUnit 5.8.1 Version und auch Smart Contract Test mit Solidity auf der Blockchain“ weiterlesen
Vor ein paar Tagen ist die neue Version von ArchUnit veröffentlicht worden. Diesmal gab es einen Breaking Change, es wurde die Klasse JavaClassList gelöscht. Es läuft alles wie gehabt:
Nötige Anpassungen in der pom.xml „Kuba erlaubt Kryptowährungen, wenn das kein Grund für ein Quicktest der neuen ArchUnit 0.21.0 ist“ weiterlesen
Wenn man eine REST-Api überprüfen will, ob ein Timeout auftritt, kann man die @Timeout Annotation von JUnit 5 verwenden.
Z.B. wenn der REST-Service nicht nach 2 Sekunden (es gehen auch Tage, Stunden, Ms, …) zurückkommt, schlägt der JUnit Test fehl:
@Timeout(value = 2, unit = TimeUnit.SECONDS)
Heute gilt „die Umsetzung von Architekturvorgaben lässt sich testen!“. Und das sogar mit JUnit 5! Cool.
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
Gestern wurde ArchUnit in Version 0.18.0 veröffentlicht.
Wenn das keine Grund ist mal zu zeigen, wie man eine Package-Abhängigkeit überprüfen kann.
Also wir wollen einen Test schreiben, der durchläuft wenn nur aus dem Package blockchain auf das Package be zugegriffen wird. Wie hier im UML Diagramm gezeigt:… „ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain“ weiterlesen
Update ohne Probleme. JUnit Test läuft, was will man mehr… „Quicktest: Neue Version Eclipse 2021‑03 veröffentlicht – Better Than Ever“ weiterlesen
Auf Github gibt es viele Templates für die .gitignore Datei. Für das Erstellen einer .gitignore Datei kann aber auch die Webseite von gitignore.io verwendet werden.
Auf dem Raspberry Pi kann man aber auch eine Shell Funktion installieren, dann geht es noch einfacher. Dazu einfach diese Funktion einmal auf der Kommandozeile aufrufen: … „.gitignore mal etwas anders“ weiterlesen
JUnit und auf Maven Central JUnit 5.7.0
Die neue Entwicklungsumgebung Eclipse 2020-03 gibt es seit heute. Das neue Quartalsrelease der IDE bringt unter anderem Unterstützung für Java 14 und mehr Möglichkeiten für die Webentwicklung. Bei Heise.de gibt es weitere Infos und Videos.
Nach dem Update:
Super, es startet:
Dann mal gleich einen ersten JUnit-Quicktest:
Anzahl aller Flugzeuge mit Flughöhen jetzt:
Flugbereich in Meter ; Flughöhe in Meter
Parken 0 ; 371
1-500 ; 418
500-1000 ; 362
1000-2000 ; 450
2000-3000 ; 283
3000-4000 ; 214
4000-5000 ; 221
5000-6000 ; 202
6000-7000 ; 198
7000-8000 ; 257
8000-9000 ; 259
9000-10000 ; 373
10000-10500 ; 317
10500-11000 ; 495
11000-11500 ; 288
11500-12000 ; 587
12000-13000 ; 406
über 13000 ; 111
Summme ; 5812
Zeitpunkt ; Wed Mar 18 21:03:04 CET 2020
Quelle ; The OpenSky Network, http://www.opensky-network.org
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
Wenn Java 8 und ein aktuelles Maven auf dem Raspberry Pi installiert ist, kann man in unter 5 Minuten eine komplette REST-Anwendung mit statischer Webseite erstellen und starten. Die dann sogar Hot Reloading fähig ist. Das geht in drei Schritten und das sogar auf einem Raspberry Pi Zero:
1. Ein neues leeres Verzeichnis erstellen und dahin wechseln:
1 2 |
mkdir quarkus-anwendung cd quarkus-anwendung |
2. Mit folgenden Maven Kommando ein Maven Projekt in ca. 30 Sekunden erstellen
1 |
mvn io.quarkus:quarkus-maven-plugin:0.24.0:create -DprojectGroupId=de.wenzlaff.info -DprojectArtifactId=info-kleinhirn -DclassName="de.wenzlaff.InfoResource" -Dpath="/info" |
3. Das Projekt compilieren und starten in ca. 40 Sekunden mit:
1 |
mvn compile quarkus:dev |
Wenn der Server gestartet ist kann im Browser das Servlet aufgerufen werden mit:
http://[PI-ADRESSE]:8080/info
Ergebnis: hello
4. Nun wollen wir in einem anderen Kommondozeilen-Fenster in das Verzeichnis „In unter 5 Minuten auf einem Raspberry Pi Zero eine Java Quarkus REST Anwendung mit JUnit-Test neu erstellen und starten!“ 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
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
Es wurde vorgestern eine neue Version von JUnit 5 veröffentlicht,
siehe https://junit.org/junit5/docs/5.4.0-M1/release-notes/
Mindmap zum Thema „Neue M1 Version von JUnit 5.4.0 veröffentlicht“ weiterlesen
Was gibt es neues in JUnit 5.3.0-M1?
Hier eine Beispiel POM: „JUnit 5 mit 5.3.0-M1 auf Photon mit Maven läuft!“ weiterlesen
Wie kann eine Vaadin Spring Boot mit Hibernate Anwendung auf JUnit 5 für Eclipse Oxygene 3A umgestellt werden?
1. Deaktivieren wir die JUnit (4.12) Libs in der pom.xml:
1 2 3 4 5 6 7 8 9 10 11 12 |
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <!-- Kein JUnit 4 mehr für den Test--> <exclusions> <exclusion> <groupId>junit</groupId> <artifactId>junit</artifactId> </exclusion> </exclusions> </dependency> |
2. Fügen wir die nötigen JUnit 5 Libs in der pom.xml hinzu:
1 2 3 4 5 6 7 8 9 10 11 12 |
<!-- Alles für JUnit 5 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <scope>test</scope> </dependency> <!-- and the engine for surefire and failsafe --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <scope>test</scope> </dependency> |
3. Wir fügen JUnit 5 dem Buildpfad hinzu:
Es sieht dann so aus:
„Wie kann eine Vaadin Spring Boot Anwendung in 15 Minuten auf JUnit 5 umgestellt werden?“ weiterlesen
Mit shellcheck kann man gut Shell Scripte überprüfen.Das kann man einfach online, über diese GUI www.shellcheck.net ausprobieren oder aber auch installieren.
Für den Raspberry Pi gibt es schon ein installations Packet, deshalb ist die Installation mit
1 2 3 |
sudo apt install shellcheck # Testen welche Version installiert wurde# # version: 0.4.4 |
schnell erledigt.
Das ist nun nicht gerade die aktuelle Version 0.5.0 aber immerhin. Ein selbst compilieren kommt für den Pi nicht infrage, da ShellCheck in Haskell programmiert ist und da für den compile mind. 2GB RAM benötigt werden, der Pi hat aber je nach Version max. 1GB.
Nun kann leicht eine Script Datei überprüft werden, mit Aufruf
shellcheck SCRIPT.sh. Hier mal zwei Beispiele:
„Shell Scripte überprüfen mit ShellCheck auch auf dem Raspberry Pi (Zero W) in 5 Minuten möglich und auch JUnit via xslt“ weiterlesen
Habe mal so geschaut, was der am wenigsten gesehene (geklickte) Block-Beitrag des Jahres 2017 war. Es ist der Beitrag mit nur einer Mindmap zum Thema „Einfaches Design„. Ok, der Beitrag ist vom 19. Oktober 2012, und ich weiß warum das keinen interessiert. Testen …
Was hälts Du von KISS? Gern als Kommentar …
Manchmal möchte man die lokalen JUnit 5 Testergebnisse für später aufheben oder als Doku verwenden oder sichern. Man kann die Ergebnisse als XML exportieren und auch später wieder importieren. So kann man sich dann Fehler oder Laufzeiten mal wieder anschauen.
Die Import und Export Menüs, erscheinen aber nur, wenn schon mal ein JUnit Test gelaufen ist, dann an dieser Position:
„JUnit 5 Test-Ergebnisse Import und Export im XML Format mit Eclipse Oxygen“ weiterlesen
Heute mal wieder ein neues Gadget aus China für 3,64 inkl. Versand eingetroffen!
WHDZ DT832 Portable Digital Multimeter mit zwei Messkabel aber ohne 9V Batterie 😉
Ideal um den Stromverbrauch oder die Spannung eines Raspberry Pi oder Arduino zu messen.
Innenansicht nach dem lösen von zwei Kreuzschlitzschrauben:
Naja, kalte Lötstellen für die NPN oder PNP Messungen sind auf den ersten Blick erkennbar. Die Funktion zum testen von Transitoren braucht wohl eh keiner.
Anleitung als PDF.
Techn. Daten mit CE Zeichen:
– DC voltage, AC voltage, DC current, AC current and resistance
– It is convenient to adjust what you need with button
– It is clear to operate with the text identifications
– The alarm will ring when detecting electric circuit on
– Small size, easy to carry
– Powered by 1 x 9V 6F22 battery ( not included )
Supply Voltage: 200-1000V
Product weight: 0.1100 kg
Package weight: 0.1870 kg
Product Size(L x W x H): 12.00 x 6.80 x 2.50 cm / 4.72 x 2.68 x 0.98 inches
Package Size(L x W x H): 13.50 x 10.00 x 3.60 cm / 5.31 x 3.94 x 1.42 inches
Package Contents: 1 x WHDZ DT832 Digital Multimeter, 1 x Table Pen, 1 x English User Manual
Projektvorschlag: Im Gehäuse ist noch Platz für einen ESP wie der WeMos. Damit können dann die gemessenen Werte drahtlos übertragen werden. Hat das schon jemand gemacht? Gern auch Link im Kommentar. Oder ist das mal ein Projekt für einen Samstag nachmittag, wenn die NOx oder Feinstaub Wert zu hoch sind 😉
Will man Testfälle aus einer CSV-Datei verwenden, geht das mit JUnit 5 Super einfach. Es gibt da eine neue Annotation @CsvFileSource der nur der Dateiname der CSV-Datei übergeben werden muss, und schon wird für jede Zeile der Test ausgeführt. Die Datei muss im Classpath liegen und mit Komma (,) getrennt sein. Sie darf keine Überschrift haben.
Als Beispiel soll mal die flug-data.csv dienen, die ua. die Summe aller erfassten Flugzeuge enthält.
Hier ein Auszug:
1 2 3 4 5 6 7 8 9 10 |
aed4022e-c6e9-45b1-96c1-14270c68a036,3550,Fri Jun 30 07:37:25 CEST 2017,287,148,115,200,139,150,110,122,129,157,155,250,347,531,293,302,99,16 8695a419-e76a-46f4-9a97-3ba7f0d06999,3514,Fri Jun 30 08:17:07 CEST 2017,206,138,126,181,137,151,126,119,117,142,172,214,338,576,353,292,103,23 ee29ce4a-4b9c-4491-ab6c-e888ccbbf4fa,3612,Fri Jun 30 08:29:03 CEST 2017,289,136,121,178,171,144,134,117,132,145,166,223,323,573,360,284,94,22 a95c25b5-8b3d-4922-9ce3-2d22269b32e8,3555,Fri Jun 30 09:23:14 CEST 2017,213,135,120,191,130,178,113,141,123,158,150,241,337,549,383,289,87,17 874494b7-4824-40b2-8660-d9acec56f837,4121,Fri Jun 30 11:27:51 CEST 2017,220,142,129,209,165,158,137,153,141,174,191,339,395,672,364,369,139,24 562e4c98-98bd-472c-9e9b-fc919c2260aa,5055,Fri Jun 30 16:00:44 CEST 2017,237,195,218,308,260,250,172,158,210,270,248,424,493,696,365,372,127,52 898c57c1-88c2-436d-b49a-a2db85ddc1fb,3277,Sun Jul 02 08:35:18 CEST 2017,211,116,92,156,118,129,102,126,99,125,134,198,308,592,393,289,77,12 6e3663bf-19c1-49fe-8260-3aa4e237b198,5084,Thu Jul 06 15:57:54 CEST 2017,292,206,216,318,259,221,149,150,179,211,230,364,474,781,421,390,160,63 ac38b07f-3aa6-4908-a7d7-bae630916f99,5296,Wed Jul 19 17:34:38 CEST 2017,259,237,214,347,272,237,181,174,186,237,202,332,440,821,439,480,183,55 b7f9487e-dd29-4095-a064-d401192ce9ad,4904,Sun Jul 23 20:32:03 CEST 2017,227,275,221,331,264,209,165,147,171,190,218,329,379,726,434,394,157,67 |
Wir wollen jetzt jede Zeile überprüfen, ob die Summe über 3000 Flugzeuge liegt und ob die UID vorhanden ist. Auch wollen wir die Testergebnisse um eine laufende Nr. ergänzen. „Cooler CSV Reader in JUnit 5“ weiterlesen
In JUnit 5 gibt es nun die Möglichkeit, Testmethoden mit Parametern ausszuführen. Anstatt der @Test Annnotation verwendet man die @ParameterizedTest. Nun braucht man noch eine Datenquelle mit @ValueSource.
Diese Klassen liegen in: „JUnit 5 @ParameterizedTest mit @ValueSource oder 3 Gründe warum man keine JUnit Tests schreiben sollte!“ weiterlesen
Wollte mal mein REST Testprogramm auf JUnit 5 umstellen. Die neuen JUnit 5 Feature sind schon sehr interessant. Vor ein paar Tagen ist der neue M6 veröffentlicht worden (JUnit 5.0.0-M6 = Platform 1.0.0-M6 + Jupiter 5.0.0-M6 + Vintage 4.12.0-M6). Auch ist die Architektur nun grundlegend geändert. Und evl. will man schon mal die Neuen Features testen. Es gilt nicht: „Wer testet ist Feige ;-)“
Was ist da so nötig?
JUnit 5 braucht zur Laufzeit Java 8.
Versionen setzen
1 2 3 4 5 6 7 8 9 10 11 12 |
<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <restlet-version>2.3.10</restlet-version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>4.12</junit.version> <junit.jupiter.version>5.0.0-M6</junit.jupiter.version> <junit.vintage.version>${junit.version}.0-M6</junit.vintage.version> <junit.platform.version>1.0.0-M6</junit.platform.version> </properties> |
Die neuen Abhängigkeiten hinzu: „Rest Test Programm: Java Migration von JUnit 4 nach JUnit 5 (1.0.0.-M6)“ weiterlesen
Manchmal will man eine Testmethode öfter ausführen. Das ist ja leicht mit einer Schleife möglich.
JUnit 5 bietet nun aber eine schöne Annotation an @RepeatedTest. Mit der kann leicht die Anzahl der Wiederholungen angegeben werden. Über die Methodenparameter TestInfo und RepetitionInfo kann zur Laufzeit auf die Klassennamen, Methodennamen und aktuellen runden Wert zugegriffen werden. Hier mal ein Beispiel:
„חזרות Wiederholungen mit JUnit 5: @RepeatedTest“ weiterlesen