Spring Framework 6.2 bzw. Spring Boot 3.4 bringt eine interessante Neuerung für Entwickler, die ihre Unit- und Integrationstests mit AssertJ schreiben: MockMvc Tests können nun auch mit AssertJ formuliert werden (GitHub Issue).
Bisher musste für Controller-Tests mit MockMvc auf die Hamcrest-Syntax zurückgegriffen werden, was zu uneinheitlichen Test-Code führen konnte.
Mit dem Release von Spring Boot 3.4 im November 2024 kann die vertraute AssertJ assertThat() API auch in Verbindung mit MockMvc verwendet werden, was das Testen von Web-Controllern eleganter und konsistenter macht.
In diesem Artikel zeigen wir, welche Anpassungen am Code notwendig sind, um diese neue Möglichkeit nutzen zu können.
Geschrieben von Karsten Sitterberg am 11. Oktober 2024
Um Anwendungen sicher und verlässlich (weiter-)entwickeln zu können, ist es etablierte Praxis, Tests zu schreiben, die das Verhalten der Anwendung sicher nachstellen und überprüfen.
Unterschieden wird dabei gerne zwischen feiner-granularen, eher technisch gelagerten Tests, wie den Unit-Tests, und Tests, die die Anwendung aus User-Sicht testen soll…
Geschrieben von Thomas Kruse am 3. Oktober 2024
Supply Chain Security spielt auch im Container Umfeld eine immer wichtigere Rolle.
Es gilt dabei die Sicherheit im Sinne von Echtheit und Integrität der (Docker) Images abzusichern.
Typische Supply Chain Angriffsszenarien bei Kubernetes, Docker und anderen Containerumgebungen sind dabei:
Verwendung manipulierte Basis-Images
Manipulation von I…
Geschrieben von Thomas Kruse am 5. August 2024
Dokumentation ist ein Thema, dass gerne hinten angestellt wird.
Quasi "wenn noch Zeit ist".
Vergleichbar mit Tests wird Dokumentation von manchen Personen als schlecht investierte Zeit angesehen.
Erschwerend kommt hinzu, dass die Pflege aufwendig ist:
Wird die Software weiterentwickelt, so müssen oft auch Tests und Dokumentation nachgezogen werden.
Wir haben gute Erfahrungen damit gemacht, Dokumentation - wo möglich - zu generieren.
Dabei kann sowohl der Java Quellcode als Quelle dienen, als auch Ergebnisse von automatisiert ausgeführten Tests.
Auf diese Weise kann die Dokumentation nah am Quellcode mitgepflegt werden, die Wahrscheinlichkeit sinkt, dass dies nicht bedacht oder vergessen wird.
In diesem Beitrag geht es darum, auch die Dokumentation der verwendeten Datenbankschemata zu dokumentieren.
Dazu werden die Werkzeuge Testcontainers, Schemacrawler und JUnit miteinander verknüpft.
Geschrieben von Thomas Kruse am 1. August 2024
Gerade für die Entwicklung und zum Testen bietet es sich im Kontext von Kubernetes an, auch eine lokale Umgebung zur Verfügung zu haben.
Seit Docker Desktop für Firmen lizenzpflichtig geworden ist, ist diese Option weniger oft anzutreffen.
Dabei sind nicht unbedingt die Kosten der entscheidende Faktor, sondern die mit der Beschaffung verbundene Komplexität und Aufwände.
Stattdessen bietet sich als Alternative an, mit der WSL zu arbeiten.
Mit Ubuntu kommt auch eine leicht einzurichtende Kubernetest Distribution von Canonical mit: Microk8s.
Microk8s bietet vergleichbar mit Minikube auch die Integration von verschiedene Addons um zum Beispiel einen Ingress einfach bereitzustellen.
Aktivierung von Ingress mit Microk8s
$ microk8s enable ingress
Da Microk8s innerhalb der WSL läuft, ist die Integration nicht ganz so nahtlos, wie dies bei Docker Desktop gelungen ist.
Wir werfen im folgenden einen Blick darauf, welche Optionen es gibt, auf den Microk8s bzw. Dienste zuzugreifen.
Im Fokus steht dabei vor allem der Ingress, wird dieser schließlich auch sonst typischerweise für den Zugriff auf HTTP Dienste und Webanwendungen genutzt.
Geschrieben von Leonard Wagner am 15. Juli 2024
In vielen modernen Anwendungen nutzen wir Keycloak zur Authentifizierung für den Zugriff auf Spring Boot Anwendungen.
Dabei werden Benutzer und ihre Rollen in Keycloak gespeichert bzw. von Keycloak bereitgestellt.
In einer Spring-Anwendung möchten wir diese Rollen nun nutzen, um den Zugriff auf Ressourcen zu autorisieren.
In einem weiteren Blogpost betrachten wir Fall in dem unsere Anwendung als OAuth 2.0 Client agiert und einen OAuth 2.0 Login implementiert.