{"id":105517,"date":"2020-06-22T13:00:00","date_gmt":"2020-06-22T10:00:00","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=105517"},"modified":"2020-06-18T13:54:56","modified_gmt":"2020-06-18T10:54:56","slug":"mock-void-method-with-mockito","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html","title":{"rendered":"Mock Void method with Mockito"},"content":{"rendered":"<p>Hey guys! After our previous blog on <a href=\"https:\/\/www.javacodegeeks.com\/2020\/05\/mockito-thenreturn-vs-mockito-thenanswer.html\">difference between thenReturn and thenAnswer mockito methods<\/a>, we are back with yet another interesting blog on Mockito. Here, we shall discuss \u201cHow to Mock Void method with Mockito\u201d. Let\u2019s get started!<\/p>\n<p>When writing code, there is always at least one method that returns \u2018void\u2019, and at some point in time we need to mock \u2018void\u2019 method. So how do we go about it? Let us together figure this out in the following blog using mockito.<\/p>\n<p>Mockito is one of the most famous mocking framework used for writing unit tests. If you are new to mocking you can know more at <a href=\"https:\/\/site.mockito.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">mockito website<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Why we need to mock void method?<\/h2>\n<p>Let\u2019s assume we have a method. In this method we call another void method. Now, when you want to write test case for this method, how can we test that the void method was called? Also, if the correct parameters were passed to void method?<br \/>In this case mockito comes to our rescue.<\/p>\n<p>Let\u2019s take an example, we have a UserService class. In this class we have a updateName() method.<\/p>\n<div>\n<div id=\"highlighter_840212\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c keyword bold\">public<\/code> <code class=\"c plain\">UserService{<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">...<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">updateName(Long id, String name){<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userRepository.updateName(id, name);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">}<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now, we want to write unit test for UserService class and mock userRepository.<br \/>But the only thing we need to verify in this test case is that updateName() method from userRepository is called with correct set of parameters.<br \/>For this purpose we need to mock updateName() method, capture the arguments and verify the arguments.<\/p>\n<p>One of the <strong>most important point <\/strong>to note here is that, we can not just mock void method using when-then mechanism of mockito. Because, when() method of mockito works with return value and does not work when method is void.<\/p>\n<h2 class=\"wp-block-heading\">How to mock void method in mockito?<\/h2>\n<p>In Mockito we can use different methods to call real method or mock void method. We can use one of the options as per requirements<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>doNothing() <\/strong>: Completely ignore the calling of void method, this is default behavior<\/li>\n<li><strong>doAnswer()<\/strong> : Perform some run time or complex operations when void method is called<\/li>\n<li><strong>doThrow() <\/strong>: Throw exception when mocked void method is called<\/li>\n<li><strong>doCallRealMethod() <\/strong>: Do not mock and call real method<\/li>\n<\/ol>\n<h3 class=\"wp-block-heading\">1) Using doNothing()<\/h3>\n<p>If we just want to completely ignore the void method call, we can use doNothing().<\/p>\n<p>In mocking, for every method of mocked object doNothing is the default behavior. Hence, if you don\u2019t want to verify parameters, use of doNothing is completely optional. Following all codes perform similar behavior,<\/p>\n<h2 class=\"wp-block-heading\">Example using doNothing() for void method<\/h2>\n<div>\n<div id=\"highlighter_558645\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c plain\">@Test<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">testUpdateNameWithDoNothingVerifyRepositoryCall() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">doNothing().when(mockedUserRepository).updateName(anyLong(),anyString());<\/code><\/div>\n<div class=\"line number4 index3 alt1\">&nbsp;<\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userService.updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">verify(mockedUserRepository, times(1)).updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Without using doNothing() for void method<\/h2>\n<div>\n<div id=\"highlighter_928073\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c plain\">@Test<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">testUpdateNameWithOutDoNothingVerifyRepositoryCall() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\">&nbsp;<\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userService.updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">verify(mockedUserRepository, times(1)).updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Example of argument capture using doNothing()<\/h2>\n<p>We can do different things with argument capture. Here, we will just verify the captured value<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<div>\n<div id=\"highlighter_843718\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c plain\">@Test<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">testUpdateNameUsingArgumentCaptor() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\">&nbsp;<\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">ArgumentCaptor&lt;Long&gt; idCapture = ArgumentCaptor.forClass(Long.<\/code><code class=\"c keyword bold\">class<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">ArgumentCaptor&lt;String&gt; nameCapture = ArgumentCaptor.forClass(String.<\/code><code class=\"c keyword bold\">class<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">doNothing().when(mockedUserRepository).updateName(idCapture.capture(),nameCapture.capture());<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"c spaces\">&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userService.updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">assertEquals(1L, idCapture.getValue());<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">assertEquals(<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">, nameCapture.getValue());<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3 class=\"wp-block-heading\">2) Using doAnswer() for void method<\/h3>\n<p>If we do not want to call real method, however need to perform some runtime operation doAnswer is used.<\/p>\n<p>Let\u2019s take an example of doAnswer where we will print and verify the argument using doAnswer<\/p>\n<div>\n<div id=\"highlighter_211627\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c plain\">@Test<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">testUpdateNameUsingDoAnswer() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">doAnswer(invocation -&gt; {<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c color1 bold\">long<\/code> <code class=\"c plain\">id = invocation.getArgument(0);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">String name = invocation.getArgument(1);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">System.out.println(<\/code><code class=\"c string\">\"called for id: \"<\/code><code class=\"c plain\">+id+<\/code><code class=\"c string\">\" and name: \"<\/code><code class=\"c plain\">+name);<\/code><\/div>\n<div class=\"line number7 index6 alt2\">&nbsp;<\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">assertEquals(1L, id);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">assertEquals(<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">, name);<\/code><\/div>\n<div class=\"line number10 index9 alt1\">&nbsp;<\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c keyword bold\">return<\/code> <code class=\"c plain\">null;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"c plain\">}).when(mockedUserRepository).updateName(anyLong(),anyString());<\/code><\/div>\n<div class=\"line number13 index12 alt2\">&nbsp;<\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userService.updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">verify(mockedUserRepository, times(1)).updateName(1L,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3 class=\"wp-block-heading\">3) Throw exception using doThrow()<\/h3>\n<p>If we want to throw an exception when method is called, we can use doThrow() method of mockito.<\/p>\n<p>Let\u2019s take an example where we will throw InvalidParamException when updateName() method is called with null id.<\/p>\n<div>\n<div id=\"highlighter_91132\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c plain\">@Test(expected = InvalidParamException.<\/code><code class=\"c keyword bold\">class<\/code><code class=\"c plain\">)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">testUpdateNameThrowExceptionWhenIdNull() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">doThrow(<\/code><code class=\"c keyword bold\">new<\/code> <code class=\"c plain\">InvalidParamException())<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">.when(mockedUserRepository).updateName(null,anyString();<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userService.updateName(null,<\/code><code class=\"c string\">\"void mock test\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3 class=\"wp-block-heading\">4) Real method call using doCallRealMethod()<\/h3>\n<p>Sometimes it is necessary to call the real method from mocked object, in such case we need to use doCallRealMethod(), because doNothig() is the default behavior.<\/p>\n<p>In the following example real method from userRepository will be called even though it is a mocked object.<\/p>\n<div>\n<div id=\"highlighter_839374\" class=\"syntaxhighlighter  c\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"c plain\">@Test<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"c keyword bold\">public<\/code> <code class=\"c keyword bold\">void<\/code> <code class=\"c plain\">testUpdateNameCallRealRepositoryMethod() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\">&nbsp;<\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">doCallRealMethod().when(mockedUserRepository).updateName(anyLong(), anyString());<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"c spaces\">&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">userService.updateName(1L,<\/code><code class=\"c string\">\"calling real method\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"c spaces\">&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"c spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"c plain\">verify(mockedUserRepository, times(1)).add(1L,<\/code><code class=\"c string\">\"calling real method\"<\/code><code class=\"c plain\">);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"c plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Fast track reading<\/h2>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/stacktraceguru.com\/unittest\/mock-void-method#need_of_mocking\">Void method is mostly mocked to check if it is called with correct parameters<\/a><\/li>\n<li>For mocking void method when-then mechanism of mockito does not work because it needs return value<\/li>\n<li>Void methods can be handled using doNothing(), doAnswer(), doThrow() or doCallRealMethod()<\/li>\n<li><a href=\"https:\/\/stacktraceguru.com\/unittest\/mock-void-method#donothing_voidMethod\">doNothing()<\/a> : Completely ignore the void method<\/li>\n<li><a href=\"https:\/\/stacktraceguru.com\/unittest\/mock-void-method#doanswer_voidMethod\">doAnswer()<\/a> : Perform some run time or complex operations<\/li>\n<li><a href=\"https:\/\/stacktraceguru.com\/unittest\/mock-void-method#dothrow_voidMethod\">doThrow() <\/a>: Throw exception when mocked void method is called<\/li>\n<li><a href=\"https:\/\/stacktraceguru.com\/unittest\/mock-void-method#docallrealMethod_void\">doCallRealMethod()<\/a> : Do not mock and call real method<\/li>\n<li>For mocked object doNothing is the default behavior for every method<\/li>\n<\/ul>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Java Code Geeks with permission by Stacktraceguru, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener noreferrer\">JCG program<\/a>. See the original article here: <a href=\"https:\/\/stacktraceguru.com\/unittest\/mock-void-method\" target=\"_blank\" rel=\"noopener noreferrer\">Mock Void method with Mockito<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hey guys! After our previous blog on difference between thenReturn and thenAnswer mockito methods, we are back with yet another interesting blog on Mockito. Here, we shall discuss \u201cHow to Mock Void method with Mockito\u201d. Let\u2019s get started! When writing code, there is always at least one method that returns \u2018void\u2019, and at some point &hellip;<\/p>\n","protected":false},"author":116473,"featured_media":186,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[460,273],"class_list":["post-105517","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-mockito","tag-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mock Void method with Mockito - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about Mock Void? Check our article explaining how to use Mock Void method with Mockito with examples\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mock Void method with Mockito - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about Mock Void? Check our article explaining how to use Mock Void method with Mockito with examples\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:author\" content=\"www.facebook.com\/Stacktraceguru\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-22T10:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/mockito-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Stacktraceguru\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stacktraceguru\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html\"},\"author\":{\"name\":\"Stacktraceguru\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/08690a509ef2e0bc8bc98ddc16bb291d\"},\"headline\":\"Mock Void method with Mockito\",\"datePublished\":\"2020-06-22T10:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html\"},\"wordCount\":710,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/mockito-logo.jpg\",\"keywords\":[\"Mockito\",\"Testing\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html\",\"name\":\"Mock Void method with Mockito - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/mockito-logo.jpg\",\"datePublished\":\"2020-06-22T10:00:00+00:00\",\"description\":\"Interested to learn about Mock Void? Check our article explaining how to use Mock Void method with Mockito with examples\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/mockito-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/mockito-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/06\\\/mock-void-method-with-mockito.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Mock Void method with Mockito\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/08690a509ef2e0bc8bc98ddc16bb291d\",\"name\":\"Stacktraceguru\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/edc9a2f27fb2b63b35c4c626a71614ab39a609abb0ad59d73cfb2fa094d3ac4f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/edc9a2f27fb2b63b35c4c626a71614ab39a609abb0ad59d73cfb2fa094d3ac4f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/edc9a2f27fb2b63b35c4c626a71614ab39a609abb0ad59d73cfb2fa094d3ac4f?s=96&d=mm&r=g\",\"caption\":\"Stacktraceguru\"},\"description\":\"Stacktraceguru is an educational website. This website helps software programmers to learn and clarify concepts.\",\"sameAs\":[\"https:\\\/\\\/stacktraceguru.com\\\/\",\"www.facebook.com\\\/Stacktraceguru\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/stacktraceguru\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mock Void method with Mockito - Java Code Geeks","description":"Interested to learn about Mock Void? Check our article explaining how to use Mock Void method with Mockito with examples","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html","og_locale":"en_US","og_type":"article","og_title":"Mock Void method with Mockito - Java Code Geeks","og_description":"Interested to learn about Mock Void? Check our article explaining how to use Mock Void method with Mockito with examples","og_url":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"www.facebook.com\/Stacktraceguru\/","article_published_time":"2020-06-22T10:00:00+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/mockito-logo.jpg","type":"image\/jpeg"}],"author":"Stacktraceguru","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Stacktraceguru","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html"},"author":{"name":"Stacktraceguru","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/08690a509ef2e0bc8bc98ddc16bb291d"},"headline":"Mock Void method with Mockito","datePublished":"2020-06-22T10:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html"},"wordCount":710,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/mockito-logo.jpg","keywords":["Mockito","Testing"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html","url":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html","name":"Mock Void method with Mockito - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/mockito-logo.jpg","datePublished":"2020-06-22T10:00:00+00:00","description":"Interested to learn about Mock Void? Check our article explaining how to use Mock Void method with Mockito with examples","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/mockito-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/mockito-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2020\/06\/mock-void-method-with-mockito.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Mock Void method with Mockito"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/08690a509ef2e0bc8bc98ddc16bb291d","name":"Stacktraceguru","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/edc9a2f27fb2b63b35c4c626a71614ab39a609abb0ad59d73cfb2fa094d3ac4f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/edc9a2f27fb2b63b35c4c626a71614ab39a609abb0ad59d73cfb2fa094d3ac4f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/edc9a2f27fb2b63b35c4c626a71614ab39a609abb0ad59d73cfb2fa094d3ac4f?s=96&d=mm&r=g","caption":"Stacktraceguru"},"description":"Stacktraceguru is an educational website. This website helps software programmers to learn and clarify concepts.","sameAs":["https:\/\/stacktraceguru.com\/","www.facebook.com\/Stacktraceguru\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/stacktraceguru"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/105517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/116473"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=105517"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/105517\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/186"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=105517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=105517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=105517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}