{"id":20402,"date":"2023-08-10T23:55:27","date_gmt":"2023-08-10T21:55:27","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=20402"},"modified":"2026-03-31T08:39:03","modified_gmt":"2026-03-31T06:39:03","slug":"unit-test-your-java-architecture-a-new-release-of-archunit-v1-1-0-is-out","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=20402","title":{"rendered":"Unit test your Java architecture a new release of ArchUnit (v1.1.0) is out."},"content":{"rendered":"<p>Leider keine Zeit f\u00fcr eine Reise nach Nashville, TN zum Patient Blood Management and Blood Health: They Top the Charts! Annual Meeting. Dann mal die gestern ver\u00f6ffentlichte Version von <a href=\"https:\/\/www.archunit.org\/\" rel=\"noopener\" target=\"_blank\">ArchUnit<\/a> testen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version.png\" alt=\"\" width=\"2140\" height=\"1304\" class=\"aligncenter size-full wp-image-20403\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version.png 2140w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version-300x183.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version-1024x624.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version-768x468.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version-1536x936.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-neue-version-2048x1248.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Das Java Framework <a href=\"https:\/\/www.archunit.org\/\" rel=\"noopener\" target=\"_blank\">ArchUnit<\/a> ist ein leistungsstarkes Werkzeug f\u00fcr die Gew\u00e4hrleistung von Softwarearchitektur und Code-Qualit\u00e4t in Java-Projekten. Durch die M\u00f6glichkeit, deklarative Regeln zu erstellen und automatisierte Tests zu schreiben, hilft <a href=\"https:\/\/www.archunit.org\/\" rel=\"noopener\" target=\"_blank\">ArchUnit<\/a>, konsistente und hochwertige Software zu entwickeln.<!--more--><\/p>\n<p> Die Integration in Build-Tools erm\u00f6glicht eine kontinuierliche \u00dcberwachung der Architekturstandards w\u00e4hrend des gesamten Entwicklungsprozesses. Durch die Verwendung von ArchUnit k\u00f6nnen Entwickler und Architekten sicherstellen, dass ihre Softwareprojekte den h\u00f6chsten Standards in Bezug auf Architektur und Code-Qualit\u00e4t entsprechen.<\/p>\n<p>Die neue Version in der pom.xml eintragen und einen Quicktest.<\/p>\n<pre class=\"theme:dark-terminal minimize:true lang:xhtml decode:true \" >&lt;!-- Architektur validation --&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.tngtech.archunit&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;archunit-junit5&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.1.0&lt;\/version&gt;\r\n\t\t\t&lt;scope&gt;test&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.tngtech.archunit&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;archunit&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.1.0&lt;\/version&gt;\r\n\t\t\t&lt;scope&gt;test&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.tngtech.archunit&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;archunit-junit5-api&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.1.0&lt;\/version&gt;\r\n\t\t\t&lt;scope&gt;test&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;<\/pre>\n<p>Alle Projekt laufen auch mit der neuen Version, siehe Bild oben.<\/p>\n<p>Die Entwicklung von Softwareanwendungen wird immer komplexer und anspruchsvoller. Um sicherzustellen, dass Softwareprojekte effizient, skalierbar und wartbar sind, ist die Einhaltung einer soliden Softwarearchitektur und Code-Qualit\u00e4t von entscheidender Bedeutung. Hier kommt das Java Framework ArchUnit ins Spiel, das sich als unverzichtbares Werkzeug f\u00fcr die \u00dcberpr\u00fcfung und Aufrechterhaltung dieser Standards etabliert hat. <\/p>\n<p>ArchUnit ist ein Open-Source-Framework f\u00fcr statische Codeanalyse in Java-Anwendungen. Es wurde entwickelt, um Entwicklern und Architekten dabei zu helfen, die Einhaltung von vordefinierten Architekturrichtlinien und -regeln in ihrem Java-Code sicherzustellen. Das Framework erm\u00f6glicht es, Architekturvorgaben in Form von Java-Codeausdr\u00fccken zu definieren und automatisierte Tests zu schreiben, um sicherzustellen, dass diese Vorgaben im gesamten Projekt eingehalten werden.<\/p>\n<p>Hier noch mal vier Hauptmerkmale von ArchUnit<\/p>\n<p>1. Deklarative Regeln:<br \/>\nArchUnit erm\u00f6glicht die Definition von Architekturregeln und -richtlinien mithilfe einer deklarativen Syntax. Entwickler k\u00f6nnen benutzerdefinierte Regeln erstellen, die sicherstellen, dass bestimmte Klassen, Pakete oder Schichten nicht in unerw\u00fcnschter Weise aufeinander zugreifen.<\/p>\n<p>2. Testbasierte \u00dcberpr\u00fcfung:<br \/>\nDas Framework erm\u00f6glicht das Schreiben von Tests (JUnit), die sicherstellen, dass die definierten Architekturvorgaben eingehalten werden. Diese Tests k\u00f6nnen in den automatischen Build-Prozess integriert werden, um sicherzustellen, dass Verst\u00f6\u00dfe gegen die Architektur sofort erkannt werden.<\/p>\n<p>3. Integration in Build-Tools:<br \/>\nArchUnit kann nahtlos in Build-Tools wie Gradle oder Maven integriert werden, um automatisierte Architektur\u00fcberpr\u00fcfungen w\u00e4hrend des Build-Vorgangs durchzuf\u00fchren. Dadurch wird sichergestellt, dass die Architekturrichtlinien kontinuierlich \u00fcberwacht werden.<\/p>\n<p>4. Unterst\u00fctzung f\u00fcr komplexe Szenarien:<br \/>\nDas Framework erm\u00f6glicht die Formulierung von komplexen Regeln und Szenarien, um sicherzustellen, dass die Softwarearchitektur den Anforderungen gerecht wird. Es kann beispielsweise \u00fcberpr\u00fcfen, ob bestimmte Pakete nur von bestimmten Schichten aus zug\u00e4nglich sind oder ob Abh\u00e4ngigkeiten zwischen Modulen korrekt gehandhabt werden.<\/p>\n<p>Und wer jetzt noch nicht \u00fcberzeugt ist, vier Vorteile von ArchUnit<\/p>\n<p><strong>Konsistente Architektur<\/strong>: ArchUnit gew\u00e4hrleistet, dass die festgelegten Architekturrichtlinien konsistent und \u00fcber den gesamten Code hinweg eingehalten werden.<\/p>\n<p><strong>Fr\u00fchzeitige Fehlererkennung<\/strong>: Durch die Integration von ArchUnit-Tests in den Build-Prozess k\u00f6nnen Architekturverletzungen fr\u00fchzeitig erkannt und behoben werden, bevor sie sich auf die Produktionsumgebung auswirken.<\/p>\n<p><strong>Wartbarkeit und Skalierbarkeit<\/strong>: ArchUnit unterst\u00fctzt bei der Erstellung von wartbarem und skalierbarem Code, da es dazu beitr\u00e4gt, eine klare Trennung der Komponenten und Schichten zu gew\u00e4hrleisten.<\/p>\n<p><strong>Dokumentation der Architektur<\/strong>: Die deklarativen Regeln in ArchUnit dienen auch als Dokumentation der gew\u00fcnschten Architektur, wodurch das Verst\u00e4ndnis und die Kommunikation im Entwicklungsteam verbessert werden.<\/p>\n<p>Bei mir geh\u00f6rt ArchUnit gleich zum Projektstart in jedes Projekt! Der Start ist auch nicht schwer, dank der guten <a href=\"https:\/\/www.archunit.org\/userguide\/html\/000_Index.html\" rel=\"noopener\" target=\"_blank\">Anleitung<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-1536x1136-1.png\" alt=\"\" width=\"1536\" height=\"1136\" class=\"aligncenter size-full wp-image-20407\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-1536x1136-1.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-1536x1136-1-300x222.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-1536x1136-1-1024x757.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/archunit-1536x1136-1-768x568.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Leider keine Zeit f\u00fcr eine Reise nach Nashville, TN zum Patient Blood Management and Blood Health: They Top the Charts! Annual Meeting. Dann mal die gestern ver\u00f6ffentlichte Version von ArchUnit testen. Das Java Framework ArchUnit ist ein leistungsstarkes Werkzeug f\u00fcr die Gew\u00e4hrleistung von Softwarearchitektur und Code-Qualit\u00e4t in Java-Projekten. Durch die M\u00f6glichkeit, deklarative Regeln zu erstellen &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=20402\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eUnit test your Java architecture a new release of ArchUnit (v1.1.0) is out.\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,4999,5,3897,79,2658],"tags":[],"class_list":["post-20402","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-archunit","category-java","category-java-programmierung","category-programmierung","category-test-thema"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/20402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20402"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/20402\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20402"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}