{"id":270,"date":"2024-03-08T14:19:06","date_gmt":"2024-03-08T13:19:06","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=270"},"modified":"2024-03-24T14:19:58","modified_gmt":"2024-03-24T13:19:58","slug":"die-grundlagen-von-mockito-in-junit-tests","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=270","title":{"rendered":"Die Grundlagen von Mockito in JUnit-Tests"},"content":{"rendered":"\n<p>In der Welt der Softwareentwicklung ist die Qualit\u00e4tssicherung von entscheidender Bedeutung. Eine der bew\u00e4hrten Methoden zur Gew\u00e4hrleistung der Qualit\u00e4t von Java-Anwendungen ist die Verwendung von JUnit-Tests. JUnit ist ein beliebtes Framework f\u00fcr das unit testing in Java-Anwendungen. Es erm\u00f6glicht Entwicklern, einzelne Komponenten ihres Codes zu isolieren und zu testen, um sicherzustellen, dass sie wie erwartet funktionieren.<\/p>\n\n\n\n<p>Mockito ist ein leistungsstarkes Mocking-Framework f\u00fcr Java, das h\u00e4ufig in Verbindung mit JUnit verwendet wird. Es erm\u00f6glicht Entwicklern, Mock-Objekte zu erstellen, die das Verhalten von echten Objekten nachahmen. Durch die Verwendung von Mockito k\u00f6nnen Entwickler die Abh\u00e4ngigkeiten ihrer Klassen isolieren und Tests schreiben, die unabh\u00e4ngig voneinander ausgef\u00fchrt werden k\u00f6nnen. Dieser Artikel wird die Grundlagen der Nutzung von Mockito in JUnit-Tests behandeln.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist Mockito?<\/h2>\n\n\n\n<p>Mockito ist ein Open-Source-Mocking-Framework f\u00fcr Java, das von Mitarbeitern der Firma JetBrains entwickelt wurde. Es bietet eine einfache und intuitive API f\u00fcr das Erstellen von Mock-Objekten und das Definieren ihres Verhaltens. Mock-Objekte sind Platzhalter f\u00fcr echte Objekte, die in Tests verwendet werden, um das Verhalten von Abh\u00e4ngigkeiten zu simulieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Grundlagen der Mockito-API<\/h2>\n\n\n\n<p>Die Mockito-API bietet verschiedene Methoden zum Erstellen und Konfigurieren von Mock-Objekten. Hier sind einige der wichtigsten Methoden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>Mockito.mock()<\/code> &#8211; Diese Methode wird verwendet, um ein Mock-Objekt f\u00fcr eine gegebene Klasse oder ein gegebenes Interface zu erstellen. Zum Beispiel:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" 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; mockedList = Mockito.mock(<span class=\"hljs-keyword\">List<\/span><span class=\"hljs-class\">.<span class=\"hljs-keyword\">class<\/span>);<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><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<ol class=\"wp-block-list\" start=\"2\">\n<li><code>when().thenReturn()<\/code> &#8211; Diese Methode wird verwendet, um das Verhalten eines Mock-Objekts zu definieren. Sie erm\u00f6glicht es Entwicklern, festzulegen, was ein Mock-Objekt zur\u00fcckgeben soll, wenn eine bestimmte Methode aufgerufen wird. Zum Beispiel:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\">   <span class=\"hljs-selector-tag\">Mockito<\/span><span class=\"hljs-selector-class\">.when<\/span>(<span class=\"hljs-selector-tag\">mockedList<\/span><span class=\"hljs-selector-class\">.get<\/span>(0))<span class=\"hljs-selector-class\">.thenReturn<\/span>(\"<span class=\"hljs-selector-tag\">first<\/span>\");<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><code>verify()<\/code> &#8211; Diese Methode wird verwendet, um zu \u00fcberpr\u00fcfen, ob eine bestimmte Methode auf einem Mock-Objekt aufgerufen wurde und wie oft sie aufgerufen wurde. Zum Beispiel:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\">   <span class=\"hljs-selector-tag\">Mockito<\/span><span class=\"hljs-selector-class\">.verify<\/span>(<span class=\"hljs-selector-tag\">mockedList<\/span>)<span class=\"hljs-selector-class\">.add<\/span>(\"<span class=\"hljs-selector-tag\">element<\/span>\");<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Integration von Mockito in JUnit-Tests<\/h2>\n\n\n\n<p>Die Integration von Mockito in JUnit-Tests ist einfach und unkompliziert. Hier ist eine grundlegende Anleitung, wie Sie Mockito in Ihren JUnit-Tests verwenden k\u00f6nnen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>F\u00fcgen Sie die Mockito-Abh\u00e4ngigkeit zu Ihrem Projekt hinzu. Dies kann durch Hinzuf\u00fcgen der folgenden Zeilen zu Ihrer <code>build.gradle<\/code>-Datei erfolgen:<\/li>\n<\/ol>\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\">   dependencies {\n       testImplementation <span class=\"hljs-string\">'org.mockito:mockito-core:3.12.4'<\/span>\n   }<\/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<p>oder f\u00fcr Maven-Projekte zur <code>pom.xml<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" 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.mockito<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>mockito-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.12.4<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-5\"><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<ol class=\"wp-block-list\" start=\"2\">\n<li>Erstellen Sie Ihre JUnit-Tests wie gewohnt.<\/li>\n\n\n\n<li>Verwenden Sie Mockito, um Mock-Objekte zu erstellen und zu konfigurieren, wenn Sie sie f\u00fcr Ihre Tests ben\u00f6tigen.<\/li>\n\n\n\n<li>F\u00fchren Sie Ihre JUnit-Tests aus und \u00fcberpr\u00fcfen Sie, ob sie wie erwartet funktionieren.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Beispiel<\/h2>\n\n\n\n<p>Um diese Konzepte zu verdeutlichen, betrachten wir ein einfaches Beispiel. Angenommen, wir haben eine Klasse <code>Calculator<\/code>, die eine Methode <code>add<\/code> enth\u00e4lt, die zwei Zahlen addiert. Diese Klasse hat eine Abh\u00e4ngigkeit von einem <code>Logger<\/code>, der die Ergebnisse der Berechnungen protokolliert. Wir m\u00f6chten die <code>add<\/code>-Methode der <code>Calculator<\/code>-Klasse testen, ohne den tats\u00e4chlichen <code>Logger<\/code> zu verwenden. Hier ist, wie ein entsprechender Test mit Mockito aussehen k\u00f6nnte:<\/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-keyword\">import<\/span> org.junit.Test;\n<span class=\"hljs-keyword\">import<\/span> org.mockito.Mockito;\n\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">static<\/span> org.junit.Assert.assertEquals;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">CalculatorTest<\/span> <\/span>{\n\n    @Test\n    public <span class=\"hljs-keyword\">void<\/span> testAdd() {\n        <span class=\"hljs-comment\">\/\/ Mocking the Logger dependency<\/span>\n        Logger mockLogger = Mockito.mock(Logger.class);\n\n        <span class=\"hljs-comment\">\/\/ Creating an instance of Calculator with the mocked Logger<\/span>\n        Calculator calculator = <span class=\"hljs-keyword\">new<\/span> Calculator(mockLogger);\n\n        <span class=\"hljs-comment\">\/\/ Stubbing behavior for the Logger mock<\/span>\n        Mockito.doNothing().when(mockLogger).log(Mockito.anyString());\n\n        <span class=\"hljs-comment\">\/\/ Testing the add method<\/span>\n        assertEquals(<span class=\"hljs-number\">5<\/span>, calculator.add(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>));\n\n        <span class=\"hljs-comment\">\/\/ Verifying that the Logger's log method was called<\/span>\n        Mockito.verify(mockLogger).log(<span class=\"hljs-string\">\"Adding 2 and 3\"<\/span>);\n    }\n}<\/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<p>In diesem Beispiel haben wir einen Mock-Logger erstellt und sein Verhalten f\u00fcr die <code>log<\/code>-Methode festgelegt. Dann haben wir einen <code>Calculator<\/code>-Objekt mit diesem Mock-Logger erstellt und die <code>add<\/code>-Methode getestet. Schlie\u00dflich haben wir \u00fcberpr\u00fcft, ob die <code>log<\/code>-Methode des Loggers wie erwartet aufgerufen wurde.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Mockito ist ein leistungsstarkes Werkzeug f\u00fcr das Mocking von Abh\u00e4ngigkeiten in JUnit-Tests. Indem es Entwicklern erm\u00f6glicht, isolierte Tests zu schreiben, k\u00f6nnen sie die Qualit\u00e4t ihrer Java-Anwendungen verbessern und die Entwicklungszeit verk\u00fcrzen. Durch die Integration von Mockito in Ihre JUnit-Tests k\u00f6nnen Sie sicherstellen, dass Ihr Code zuverl\u00e4ssig und fehlerfrei ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Welt der Softwareentwicklung ist die Qualit\u00e4tssicherung von entscheidender Bedeutung. Eine der bew\u00e4hrten Methoden zur Gew\u00e4hrleistung der Qualit\u00e4t von Java-Anwendungen ist die Verwendung von JUnit-Tests. JUnit ist ein beliebtes Framework f\u00fcr das unit testing in Java-Anwendungen. Es erm\u00f6glicht Entwicklern, einzelne Komponenten ihres Codes zu isolieren und zu testen, um sicherzustellen, dass sie wie erwartet [&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-270","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\/270","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=270"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/270\/revisions"}],"predecessor-version":[{"id":271,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/270\/revisions\/271"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}