{"id":415,"date":"2024-05-28T08:53:13","date_gmt":"2024-05-28T07:53:13","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=415"},"modified":"2024-06-14T08:54:05","modified_gmt":"2024-06-14T07:54:05","slug":"assertj-bessere-assertions-in-java-unit-tests","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=415","title":{"rendered":"AssertJ &#8211; bessere Assertions in Java-Unit-Tests"},"content":{"rendered":"\n<p>AssertJ ist eine leistungsf\u00e4hige und leicht zu verwendende Java-Assertion-Bibliothek, die f\u00fcr ihre klaren und intuitiven API bekannt ist. Sie erleichtert das Schreiben und Verstehen von Testcode und bietet eine breite Palette an Assertionen, die weit \u00fcber die M\u00f6glichkeiten von JUnit und Hamcrest hinausgehen. In diesem Artikel werden wir die Hauptmerkmale und die Anwendung von AssertJ detailliert beleuchten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung in AssertJ<\/h2>\n\n\n\n<p>AssertJ ist eine Open-Source-Bibliothek, die urspr\u00fcnglich als Erweiterung von Fest-Assertions entstand. Sie wurde entwickelt, um die Einschr\u00e4nkungen und Unzul\u00e4nglichkeiten anderer Assertion-Bibliotheken zu \u00fcberwinden. Mit ihrer fl\u00fcssigen und lesbaren Syntax bietet AssertJ Entwicklern eine Vielzahl von Vorteilen, darunter:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Klarheit und Lesbarkeit<\/strong>: Die API von AssertJ ist so gestaltet, dass die Tests leicht zu lesen und zu verstehen sind. Das tr\u00e4gt zur besseren Wartbarkeit des Codes bei.<\/li>\n\n\n\n<li><strong>Erweiterbarkeit<\/strong>: AssertJ erm\u00f6glicht die Erstellung benutzerdefinierter Assertionen, die spezifisch auf die Anforderungen eines Projekts zugeschnitten sind.<\/li>\n\n\n\n<li><strong>Leistungsst\u00e4rke<\/strong>: Mit einer breiten Palette von vordefinierten Assertionen k\u00f6nnen Entwickler nahezu alle Aspekte ihres Codes \u00fcberpr\u00fcfen.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Grundlegende Verwendung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<p>Um AssertJ in einem Maven-Projekt zu verwenden, muss die folgende Abh\u00e4ngigkeit in der <code>pom.xml<\/code> hinzugef\u00fcgt werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.assertj<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>assertj-core<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.20.2<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">scope<\/span>&gt;<\/span>test<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">scope<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>F\u00fcr Gradle-Projekte sieht die Konfiguration wie folgt aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">testImplementation <span class=\"hljs-string\">'org.assertj:assertj-core:3.20.2'<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Erste Schritte mit AssertJ<\/h3>\n\n\n\n<p>Ein einfaches Beispiel f\u00fcr die Verwendung von AssertJ k\u00f6nnte wie folgt aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.assertj.core.api.Assertions;\n<span class=\"hljs-keyword\">import<\/span> org.junit.jupiter.api.Test;\n\n<span class=\"hljs-keyword\">import<\/span> java.util.Arrays;\n<span class=\"hljs-keyword\">import<\/span> java.util.List;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AssertJExampleTest<\/span> <\/span>{\n\n    @Test\n    public <span class=\"hljs-keyword\">void<\/span> testAssertions() {\n        <span class=\"hljs-built_in\">String<\/span> str = <span class=\"hljs-string\">\"Hello, AssertJ!\"<\/span>;\n        List&lt;<span class=\"hljs-built_in\">String<\/span>&gt; list = Arrays.asList(<span class=\"hljs-string\">\"one\"<\/span>, <span class=\"hljs-string\">\"two\"<\/span>, <span class=\"hljs-string\">\"three\"<\/span>);\n\n        Assertions.assertThat(str).isNotNull()\n                .startsWith(<span class=\"hljs-string\">\"Hello\"<\/span>)\n                .contains(<span class=\"hljs-string\">\"AssertJ\"<\/span>)\n                .endsWith(<span class=\"hljs-string\">\"!\"<\/span>);\n\n        Assertions.assertThat(list).isNotEmpty()\n                .hasSize(<span class=\"hljs-number\">3<\/span>)\n                .contains(<span class=\"hljs-string\">\"two\"<\/span>)\n                .doesNotContain(<span class=\"hljs-string\">\"four\"<\/span>);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel \u00fcberpr\u00fcfen wir verschiedene Eigenschaften eines Strings und einer Liste. Die Methode <code>assertThat<\/code> dient als Einstiegspunkt f\u00fcr alle Assertionen in AssertJ.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wichtige Funktionen und Assertionen<\/h2>\n\n\n\n<p>AssertJ bietet eine Vielzahl von Assertionen, die in verschiedene Kategorien unterteilt werden k\u00f6nnen. Im Folgenden werden einige der wichtigsten Funktionen und ihre Anwendung beschrieben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">String-Assertionen<\/h3>\n\n\n\n<p>Mit String-Assertionen k\u00f6nnen Entwickler verschiedene Eigenschaften und Zust\u00e4nde von Strings \u00fcberpr\u00fcfen. Hier einige h\u00e4ufig verwendete Methoden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">String<\/span> str = <span class=\"hljs-string\">\"AssertJ is great!\"<\/span>;\n\nAssertions.assertThat(str).isNotNull()\n        .isNotEmpty()\n        .startsWith(<span class=\"hljs-string\">\"AssertJ\"<\/span>)\n        .endsWith(<span class=\"hljs-string\">\"great!\"<\/span>)\n        .contains(<span class=\"hljs-string\">\"is\"<\/span>)\n        .doesNotContain(<span class=\"hljs-string\">\"bad\"<\/span>)\n        .isEqualToIgnoringCase(<span class=\"hljs-string\">\"assertj is great!\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Collection-Assertionen<\/h3>\n\n\n\n<p>F\u00fcr Collections bietet AssertJ umfassende M\u00f6glichkeiten zur \u00dcberpr\u00fcfung von Gr\u00f6\u00dfe, Inhalt und Reihenfolge:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">List<\/span>&lt;String&gt; <span class=\"hljs-keyword\">list<\/span> = Arrays.asList(<span class=\"hljs-string\">\"one\"<\/span>, <span class=\"hljs-string\">\"two\"<\/span>, <span class=\"hljs-string\">\"three\"<\/span>);\n\nAssertions.assertThat(<span class=\"hljs-keyword\">list<\/span>).isNotEmpty()\n        .hasSize(<span class=\"hljs-number\">3<\/span>)\n        .contains(<span class=\"hljs-string\">\"one\"<\/span>, <span class=\"hljs-string\">\"two\"<\/span>)\n        .containsExactly(<span class=\"hljs-string\">\"one\"<\/span>, <span class=\"hljs-string\">\"two\"<\/span>, <span class=\"hljs-string\">\"three\"<\/span>)\n        .doesNotContain(<span class=\"hljs-string\">\"four\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Array-Assertionen<\/h3>\n\n\n\n<p>Array-Assertionen sind \u00e4hnlich zu Collection-Assertionen, jedoch spezifisch f\u00fcr Arrays:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">int&#91;] numbers = {1, 2, 3, 4, 5};\n\nAssertions.assertThat(numbers).isNotEmpty()\n        .hasSize(5)\n        .contains(1, 2, 3)\n        .containsExactly(1, 2, 3, 4, 5)\n        .doesNotContain(6);<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Map-Assertionen<\/h3>\n\n\n\n<p>Mit Map-Assertionen lassen sich Schl\u00fcssel, Werte und Eintr\u00e4ge einer Map \u00fcberpr\u00fcfen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">Map<\/span>&lt;<span class=\"hljs-built_in\">String<\/span>, Integer&gt; map = <span class=\"hljs-keyword\">new<\/span> HashMap&lt;&gt;();\nmap.put(<span class=\"hljs-string\">\"one\"<\/span>, <span class=\"hljs-number\">1<\/span>);\nmap.put(<span class=\"hljs-string\">\"two\"<\/span>, <span class=\"hljs-number\">2<\/span>);\nmap.put(<span class=\"hljs-string\">\"three\"<\/span>, <span class=\"hljs-number\">3<\/span>);\n\nAssertions.assertThat(map).isNotEmpty()\n        .hasSize(<span class=\"hljs-number\">3<\/span>)\n        .containsKeys(<span class=\"hljs-string\">\"one\"<\/span>, <span class=\"hljs-string\">\"two\"<\/span>)\n        .containsValues(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)\n        .containsEntry(<span class=\"hljs-string\">\"three\"<\/span>, <span class=\"hljs-number\">3<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Exception-Assertionen<\/h3>\n\n\n\n<p>AssertJ bietet auch M\u00f6glichkeiten zur \u00dcberpr\u00fcfung von Exceptions und deren Eigenschaften:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Throwable thrown = Assertions.catchThrowable(() -&gt; {\n    <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> IllegalArgumentException(<span class=\"hljs-string\">\"Invalid argument\"<\/span>);\n});\n\nAssertions.assertThat(thrown).isInstanceOf(IllegalArgumentException.class)\n        .hasMessageContaining(<span class=\"hljs-string\">\"Invalid\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Datum- und Zeit-Assertionen<\/h3>\n\n\n\n<p>F\u00fcr die Arbeit mit Datums- und Zeitwerten bietet AssertJ spezielle Assertionen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">LocalDate date = LocalDate.of(<span class=\"hljs-number\">2023<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">15<\/span>);\n\nAssertions.assertThat(date).isAfter(LocalDate.of(<span class=\"hljs-number\">2023<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>))\n        .isBefore(LocalDate.of(<span class=\"hljs-number\">2023<\/span>, <span class=\"hljs-number\">12<\/span>, <span class=\"hljs-number\">31<\/span>))\n        .isEqualTo(<span class=\"hljs-string\">\"2023-05-15\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Erweiterte Funktionen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Benutzerdefinierte Assertionen<\/h3>\n\n\n\n<p>AssertJ erm\u00f6glicht die Erstellung benutzerdefinierter Assertionen, um spezifische Anforderungen zu erf\u00fcllen. Hier ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    private <span class=\"hljs-built_in\">String<\/span> name;\n    private int age;\n\n    <span class=\"hljs-comment\">\/\/ Konstruktoren, Getter und Setter<\/span>\n}\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">PersonAssert<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">AbstractAssert<\/span>&lt;<span class=\"hljs-title\">PersonAssert<\/span>, <span class=\"hljs-title\">Person<\/span>&gt; <\/span>{\n\n    public PersonAssert(Person actual) {\n        <span class=\"hljs-keyword\">super<\/span>(actual, PersonAssert.class);\n    }\n\n    public <span class=\"hljs-keyword\">static<\/span> PersonAssert assertThat(Person actual) {\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> PersonAssert(actual);\n    }\n\n    public PersonAssert hasName(<span class=\"hljs-built_in\">String<\/span> name) {\n        isNotNull();\n        <span class=\"hljs-keyword\">if<\/span> (!actual.getName().equals(name)) {\n            failWithMessage(<span class=\"hljs-string\">\"Expected person's name to be &lt;%s&gt; but was &lt;%s&gt;\"<\/span>, name, actual.getName());\n        }\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">this<\/span>;\n    }\n\n    public PersonAssert hasAge(int age) {\n        isNotNull();\n        <span class=\"hljs-keyword\">if<\/span> (actual.getAge() != age) {\n            failWithMessage(<span class=\"hljs-string\">\"Expected person's age to be &lt;%s&gt; but was &lt;%s&gt;\"<\/span>, age, actual.getAge());\n        }\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">this<\/span>;\n    }\n}\n\n<span class=\"hljs-comment\">\/\/ Verwendung der benutzerdefinierten Assertion<\/span>\nPerson person = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"John Doe\"<\/span>, <span class=\"hljs-number\">25<\/span>);\n\nPersonAssert.assertThat(person).hasName(<span class=\"hljs-string\">\"John Doe\"<\/span>)\n        .hasAge(<span class=\"hljs-number\">25<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Soft Assertions<\/h3>\n\n\n\n<p>Mit Soft Assertions kann man mehrere Assertionen gleichzeitig ausf\u00fchren und alle Fehler auf einmal anzeigen, anstatt nach dem ersten Fehler abzubrechen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">SoftAssertions softly = <span class=\"hljs-keyword\">new<\/span> SoftAssertions();\n\nsoftly.assertThat(<span class=\"hljs-string\">\"Hello\"<\/span>).isEqualTo(<span class=\"hljs-string\">\"Hello\"<\/span>);\nsoftly.assertThat(<span class=\"hljs-number\">1<\/span>).isGreaterThan(<span class=\"hljs-number\">0<\/span>);\nsoftly.assertThat(<span class=\"hljs-literal\">true<\/span>).isFalse(); <span class=\"hljs-comment\">\/\/ Dieser Fehler wird erst am Ende ausgegeben<\/span>\n\nsoftly.assertAll(); <span class=\"hljs-comment\">\/\/ F\u00fchrt alle Assertionen aus und zeigt alle Fehler an<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">BDD-Style Assertions<\/h3>\n\n\n\n<p>AssertJ unterst\u00fctzt auch Behavior-Driven Development (BDD)-Style Assertions:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">static<\/span> org.assertj.core.api.BDDAssertions.*;\n\n<span class=\"hljs-built_in\">String<\/span> str = <span class=\"hljs-string\">\"AssertJ BDD\"<\/span>;\n\nthen(str).isNotNull()\n        .startsWith(<span class=\"hljs-string\">\"AssertJ\"<\/span>)\n        .endsWith(<span class=\"hljs-string\">\"BDD\"<\/span>)\n        .contains(<span class=\"hljs-string\">\" \"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>AssertJ ist eine vielseitige und leistungsf\u00e4hige Assertion-Bibliothek, die das Schreiben und Verstehen von Tests erheblich erleichtert. Mit ihrer klaren und lesbaren API, den umfangreichen vordefinierten Assertionen und der M\u00f6glichkeit, benutzerdefinierte Assertionen zu erstellen, ist AssertJ ein wertvolles Werkzeug f\u00fcr jeden Java-Entwickler. Ob f\u00fcr einfache Unit-Tests oder komplexe Integrations-Tests \u2013 AssertJ bietet die Flexibilit\u00e4t und die Funktionen, die Entwickler ben\u00f6tigen, um robuste und wartbare Tests zu schreiben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AssertJ ist eine leistungsf\u00e4hige und leicht zu verwendende Java-Assertion-Bibliothek, die f\u00fcr ihre klaren und intuitiven API bekannt ist. Sie erleichtert das Schreiben und Verstehen von Testcode und bietet eine breite Palette an Assertionen, die weit \u00fcber die M\u00f6glichkeiten von JUnit und Hamcrest hinausgehen. In diesem Artikel werden wir die Hauptmerkmale und die Anwendung von AssertJ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-415","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=415"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/415\/revisions"}],"predecessor-version":[{"id":416,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/415\/revisions\/416"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}