diff --git a/testing-modules/mockito-simple/pom.xml b/testing-modules/mockito-simple/pom.xml
index 3bfca2db2a..f96cb98d46 100644
--- a/testing-modules/mockito-simple/pom.xml
+++ b/testing-modules/mockito-simple/pom.xml
@@ -29,12 +29,14 @@
spring-context
${spring-framework.version}
+
org.apache.commons
commons-lang3
${commons-lang3.version}
+
org.mockito
@@ -55,9 +57,8 @@
- 5.3.20
-
- 4.6.1
+ 6.0.8
+ 5.3.1
\ No newline at end of file
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/api/MessageDTO.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/app/api/MessageDTO.java
deleted file mode 100644
index 1d9da244b0..0000000000
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/api/MessageDTO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.baeldung.app.api;
-
-public class MessageDTO {
- private String from;
- private String to;
- private String text;
-
- public String getFrom() {
- return from;
- }
-
- public void setFrom(String from) {
- this.from = from;
- }
-
- public String getTo() {
- return to;
- }
-
- public void setTo(String to) {
- this.to = to;
- }
-
- public String getText() {
- return text;
- }
-
- public void setText(String text) {
- this.text = text;
- }
-}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/rest/FlowerController.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/app/rest/FlowerController.java
deleted file mode 100644
index 10f602088c..0000000000
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/rest/FlowerController.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.baeldung.app.rest;
-
-import com.baeldung.app.api.Flower;
-import com.baeldung.domain.service.FlowerService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@Controller
-@RequestMapping("/flowers")
-public class FlowerController {
-
- @Autowired
- private FlowerService flowerService;
-
- @PostMapping("/isAFlower")
- public String isAFlower (@RequestBody String flower) {
- return flowerService.analyze(flower);
- }
-
- @PostMapping("/isABigFlower")
- public Boolean isABigFlower (@RequestBody Flower flower) {
- return flowerService.isABigFlower(flower.getName(), flower.getPetals());
- }
-}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/rest/MessageController.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/app/rest/MessageController.java
deleted file mode 100644
index 6911197197..0000000000
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/rest/MessageController.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.baeldung.app.rest;
-
-import com.baeldung.app.api.MessageDTO;
-import com.baeldung.domain.model.Message;
-import com.baeldung.domain.service.MessageService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import java.time.Instant;
-import java.util.Date;
-import java.util.UUID;
-
-@Controller
-@RequestMapping("/message")
-public class MessageController {
-
- @Autowired
- private MessageService messageService;
-
- @PostMapping
- public Message createMessage (@RequestBody MessageDTO messageDTO) {
- Message message = new Message();
- message.setText(messageDTO.getText());
- message.setFrom(messageDTO.getFrom());
- message.setTo(messageDTO.getTo());
- message.setDate(Date.from(Instant.now()));
- message.setId(UUID.randomUUID());
-
- return messageService.deliverMessage(message);
- }
-}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/model/Message.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/model/Message.java
deleted file mode 100644
index a516d5619b..0000000000
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/model/Message.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.baeldung.domain.model;
-
-import java.util.Date;
-import java.util.UUID;
-
-public class Message {
-
- private String from;
- private String to;
- private String text;
- private Date date;
- private UUID id;
-
- public String getFrom() {
- return from;
- }
-
- public void setFrom(String from) {
- this.from = from;
- }
-
- public String getTo() {
- return to;
- }
-
- public void setTo(String to) {
- this.to = to;
- }
-
- public String getText() {
- return text;
- }
-
- public void setText(String text) {
- this.text = text;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public UUID getId() {
- return id;
- }
-
- public void setId(UUID id) {
- this.id = id;
- }
-}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/MailClient.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/MailClient.java
deleted file mode 100644
index d10169ef7a..0000000000
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/MailClient.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.baeldung.junit5.mockito.repository;
-
-import com.baeldung.junit5.mockito.User;
-
-public interface MailClient {
-
- void sendUserRegistrationMail(User user);
-
-}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/UserService.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/UserService.java
deleted file mode 100644
index 326d019b4a..0000000000
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/UserService.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.baeldung.junit5.mockito.service;
-
-import com.baeldung.junit5.mockito.User;
-
-public interface UserService {
-
- User register(User user);
-
-}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java
index d5d60bb6fc..3ec86b4499 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java
@@ -1,14 +1,25 @@
package com.baeldung.mockito.argumentcaptor;
public class Credentials {
- private final String name;
- private final String password;
- private final String key;
+ private final String name;
+ private final String password;
+ private final String key;
- public Credentials(String name, String password, String key) {
- this.name = name;
- this.password = password;
- this.key = key;
- }
+ public Credentials(String name, String password, String key) {
+ this.name = name;
+ this.password = password;
+ this.key = key;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public String getKey() {
+ return key;
+ }
}
-
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/api/Flower.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/Flower.java
similarity index 90%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/app/api/Flower.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/Flower.java
index dc1c36e3ff..8bfd0d1b02 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/app/api/Flower.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/Flower.java
@@ -1,4 +1,4 @@
-package com.baeldung.app.api;
+package com.baeldung.mockito.argumentmatchers;
public class Flower {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/Message.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/Message.java
new file mode 100644
index 0000000000..13d285de8d
--- /dev/null
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/Message.java
@@ -0,0 +1,53 @@
+package com.baeldung.mockito.argumentmatchers;
+
+import java.util.Date;
+import java.util.UUID;
+
+public class Message {
+
+ private String from;
+ private String to;
+ private String text;
+ private Date date;
+ private UUID id;
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/MessageDTO.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/MessageDTO.java
new file mode 100644
index 0000000000..76989e758c
--- /dev/null
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/MessageDTO.java
@@ -0,0 +1,32 @@
+package com.baeldung.mockito.argumentmatchers;
+
+public class MessageDTO {
+
+ private String from;
+ private String to;
+ private String text;
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/controller/FlowerController.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/controller/FlowerController.java
new file mode 100644
index 0000000000..29c8dbb15d
--- /dev/null
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/controller/FlowerController.java
@@ -0,0 +1,28 @@
+package com.baeldung.mockito.argumentmatchers.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.baeldung.mockito.argumentmatchers.Flower;
+import com.baeldung.mockito.argumentmatchers.service.FlowerService;
+
+@Controller
+@RequestMapping("/flowers")
+public class FlowerController {
+
+ @Autowired
+ private FlowerService flowerService;
+
+ @PostMapping("/isAFlower")
+ public String isAFlower(@RequestBody String flower) {
+ return flowerService.analyze(flower);
+ }
+
+ @PostMapping("/isABigFlower")
+ public Boolean isABigFlower(@RequestBody Flower flower) {
+ return flowerService.isABigFlower(flower.getName(), flower.getPetals());
+ }
+}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/controller/MessageController.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/controller/MessageController.java
new file mode 100644
index 0000000000..16eb041044
--- /dev/null
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/controller/MessageController.java
@@ -0,0 +1,35 @@
+package com.baeldung.mockito.argumentmatchers.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.baeldung.mockito.argumentmatchers.Message;
+import com.baeldung.mockito.argumentmatchers.MessageDTO;
+import com.baeldung.mockito.argumentmatchers.service.MessageService;
+
+import java.time.Instant;
+import java.util.Date;
+import java.util.UUID;
+
+@Controller
+@RequestMapping("/message")
+public class MessageController {
+
+ @Autowired
+ private MessageService messageService;
+
+ @PostMapping
+ public Message createMessage(@RequestBody MessageDTO messageDTO) {
+ Message message = new Message();
+ message.setText(messageDTO.getText());
+ message.setFrom(messageDTO.getFrom());
+ message.setTo(messageDTO.getTo());
+ message.setDate(Date.from(Instant.now()));
+ message.setId(UUID.randomUUID());
+
+ return messageService.deliverMessage(message);
+ }
+}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/service/FlowerService.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/service/FlowerService.java
similarity index 91%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/domain/service/FlowerService.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/service/FlowerService.java
index 74a9308890..364f2b57d7 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/service/FlowerService.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/service/FlowerService.java
@@ -1,4 +1,4 @@
-package com.baeldung.domain.service;
+package com.baeldung.mockito.argumentmatchers.service;
import org.springframework.stereotype.Service;
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/service/MessageService.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/service/MessageService.java
similarity index 61%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/domain/service/MessageService.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/service/MessageService.java
index d156c59571..beeccf763a 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/domain/service/MessageService.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/argumentmatchers/service/MessageService.java
@@ -1,8 +1,9 @@
-package com.baeldung.domain.service;
+package com.baeldung.mockito.argumentmatchers.service;
-import com.baeldung.domain.model.Message;
import org.springframework.stereotype.Service;
+import com.baeldung.mockito.argumentmatchers.Message;
+
@Service
public class MessageService {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/User.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/User.java
similarity index 95%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/User.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/User.java
index 4276fd62b9..0f0b93e30b 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/User.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/User.java
@@ -1,4 +1,4 @@
-package com.baeldung.junit5.mockito;
+package com.baeldung.mockito.junit5;
public class User {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/MailClient.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/MailClient.java
new file mode 100644
index 0000000000..722c4fff71
--- /dev/null
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/MailClient.java
@@ -0,0 +1,9 @@
+package com.baeldung.mockito.junit5.repository;
+
+import com.baeldung.mockito.junit5.User;
+
+public interface MailClient {
+
+ void sendUserRegistrationMail(User user);
+
+}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/SettingRepository.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/SettingRepository.java
similarity index 68%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/SettingRepository.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/SettingRepository.java
index 23ae8fa35c..78249c9fd9 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/SettingRepository.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/SettingRepository.java
@@ -1,4 +1,4 @@
-package com.baeldung.junit5.mockito.repository;
+package com.baeldung.mockito.junit5.repository;
public interface SettingRepository {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/UserRepository.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/UserRepository.java
similarity index 58%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/UserRepository.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/UserRepository.java
index e1b84c774b..5ce624b73b 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/repository/UserRepository.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/repository/UserRepository.java
@@ -1,6 +1,6 @@
-package com.baeldung.junit5.mockito.repository;
+package com.baeldung.mockito.junit5.repository;
-import com.baeldung.junit5.mockito.User;
+import com.baeldung.mockito.junit5.User;
public interface UserRepository {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/DefaultUserService.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/DefaultUserService.java
similarity index 82%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/DefaultUserService.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/DefaultUserService.java
index 888edbd710..c239bba2b3 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/DefaultUserService.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/DefaultUserService.java
@@ -1,9 +1,9 @@
-package com.baeldung.junit5.mockito.service;
+package com.baeldung.mockito.junit5.service;
-import com.baeldung.junit5.mockito.User;
-import com.baeldung.junit5.mockito.repository.MailClient;
-import com.baeldung.junit5.mockito.repository.SettingRepository;
-import com.baeldung.junit5.mockito.repository.UserRepository;
+import com.baeldung.mockito.junit5.User;
+import com.baeldung.mockito.junit5.repository.MailClient;
+import com.baeldung.mockito.junit5.repository.SettingRepository;
+import com.baeldung.mockito.junit5.repository.UserRepository;
public class DefaultUserService implements UserService {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/Errors.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/Errors.java
similarity index 87%
rename from testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/Errors.java
rename to testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/Errors.java
index 28283754a3..c46688f484 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/junit5/mockito/service/Errors.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/Errors.java
@@ -1,4 +1,4 @@
-package com.baeldung.junit5.mockito.service;
+package com.baeldung.mockito.junit5.service;
public class Errors {
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/UserService.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/UserService.java
new file mode 100644
index 0000000000..b781747a45
--- /dev/null
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/junit5/service/UserService.java
@@ -0,0 +1,9 @@
+package com.baeldung.mockito.junit5.service;
+
+import com.baeldung.mockito.junit5.User;
+
+public interface UserService {
+
+ User register(User user);
+
+}
diff --git a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/mockedstatic/StaticUtils.java b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/mockedstatic/StaticUtils.java
index 2e2f5ead33..e7ee3a0aa6 100644
--- a/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/mockedstatic/StaticUtils.java
+++ b/testing-modules/mockito-simple/src/main/java/com/baeldung/mockito/mockedstatic/StaticUtils.java
@@ -6,17 +6,16 @@ import java.util.stream.IntStream;
public class StaticUtils {
- private StaticUtils() {
- }
+ private StaticUtils() {
+ }
- public static List range(int start, int end) {
- return IntStream.range(start, end)
- .boxed()
- .collect(Collectors.toList());
- }
-
- public static String name() {
- return "Baeldung";
- }
+ public static List range(int start, int end) {
+ return IntStream.range(start, end)
+ .boxed()
+ .collect(Collectors.toList());
+ }
+ public static String name() {
+ return "Baeldung";
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/app/rest/MessageControllerUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/app/rest/MessageControllerUnitTest.java
deleted file mode 100644
index 84b5bf241e..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/app/rest/MessageControllerUnitTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.baeldung.app.rest;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import com.baeldung.app.api.MessageDTO;
-import com.baeldung.domain.model.Message;
-import com.baeldung.domain.service.MessageService;
-import com.baeldung.domain.util.MessageMatcher;
-
-@ExtendWith(MockitoExtension.class)
-class MessageControllerUnitTest {
-
- @InjectMocks
- private MessageController messageController;
-
- @Mock
- private MessageService messageService;
-
- @Test
- void givenMsg_whenVerifyUsingAnyMatcher_thenOk() {
- MessageDTO messageDTO = new MessageDTO();
- messageDTO.setFrom("me");
- messageDTO.setTo("you");
- messageDTO.setText("Hello, you!");
-
- messageController.createMessage(messageDTO);
-
- verify(messageService, times(1)).deliverMessage(any(Message.class));
- }
-
- @Test
- void givenMsg_whenVerifyUsingMessageMatcher_thenOk() {
- MessageDTO messageDTO = new MessageDTO();
- messageDTO.setFrom("me");
- messageDTO.setTo("you");
- messageDTO.setText("Hello, you!");
-
- messageController.createMessage(messageDTO);
-
- Message message = new Message();
- message.setFrom("me");
- message.setTo("you");
- message.setText("Hello, you!");
-
- verify(messageService, times(1)).deliverMessage(argThat(new MessageMatcher(message)));
- }
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/FinalList.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/FinalList.java
index 27b7534978..87e8b5de77 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/FinalList.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/FinalList.java
@@ -2,9 +2,9 @@ package com.baeldung.mockito;
public final class FinalList extends MyList {
- @Override
- public int size() {
- return 1;
- }
+ @Override
+ public int size() {
+ return 1;
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockFinalsUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockFinalsUnitTest.java
deleted file mode 100644
index a4b2bd03b4..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockFinalsUnitTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.mockito;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.junit.jupiter.api.Test;
-
-class MockFinalsUnitTest {
-
- @Test
- void whenMockFinalMethodMockWorks() {
-
- MyList myList = new MyList();
-
- MyList mock = mock(MyList.class);
- when(mock.finalMethod()).thenReturn(1);
-
- assertThat(mock.finalMethod()).isNotEqualTo(myList.finalMethod());
- }
-
- @Test
- public void whenMockFinalClassMockWorks() {
-
- FinalList finalList = new FinalList();
-
- FinalList mock = mock(FinalList.class);
- when(mock.size()).thenReturn(2);
-
- assertThat(mock.size()).isNotEqualTo(finalList.size());
- }
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java
deleted file mode 100644
index acfd87e047..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.baeldung.mockito;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class MockitoAnnotationUnitTest {
-
- @Mock
- private List mockedList;
-
- @Spy
- private List spiedList = new ArrayList<>();
-
- // Use either @RunWith(MockitoJUnitRunner.class) or manually openMocks in the @Before method
- /*
- @Before
- public void init() {
- MockitoAnnotations.openMocks(this);
- }
- */
-
- // tests
-
- @Test
- void whenNotUseMockAnnotation_thenCorrect() {
- final List mockList = mock(List.class);
- mockList.add("one");
- verify(mockList).add("one");
- assertEquals(0, mockList.size());
-
- when(mockList.size()).thenReturn(100);
- assertEquals(100, mockList.size());
- }
-
- @Test
- void whenUseMockAnnotation_thenMockIsInjected() {
- mockedList.add("one");
- verify(mockedList).add("one");
- assertEquals(0, mockedList.size());
-
- when(mockedList.size()).thenReturn(100);
- assertEquals(100, mockedList.size());
- }
-
- @Test
- void whenNotUseSpyAnnotation_thenCorrect() {
- final List spyList = spy(new ArrayList());
- spyList.add("one");
- spyList.add("two");
-
- verify(spyList).add("one");
- verify(spyList).add("two");
-
- assertEquals(2, spyList.size());
-
- doReturn(100).when(spyList).size();
- assertEquals(100, spyList.size());
- }
-
- @Test
- void whenUseSpyAnnotation_thenSpyIsInjectedCorrectly() {
- spiedList.add("one");
- spiedList.add("two");
-
- verify(spiedList).add("one");
- verify(spiedList).add("two");
-
- assertEquals(2, spiedList.size());
-
- doReturn(100).when(spiedList).size();
- assertEquals(100, spiedList.size());
- }
-
- @Test
- void whenNotUseCaptorAnnotation_thenCorrect() {
- final List mockList = mock(List.class);
- final ArgumentCaptor arg = ArgumentCaptor.forClass(String.class);
- mockList.add("one");
- verify(mockList).add(arg.capture());
-
- assertEquals("one", arg.getValue());
- }
-
- @Captor
- private
- ArgumentCaptor argCaptor;
-
- @Test
- void whenUseCaptorAnnotation_thenTheSame() {
- mockedList.add("one");
- verify(mockedList).add(argCaptor.capture());
-
- assertEquals("one", argCaptor.getValue());
- }
-
- @Mock
- private Map wordMap;
-
- @InjectMocks
- private MyDictionary dic = new MyDictionary();
-
- @Test
- void whenUseInjectMocksAnnotation_thenCorrect() {
- when(wordMap.get("aWord")).thenReturn("aMeaning");
-
- assertEquals("aMeaning", dic.getMeaning("aWord"));
- }
-
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsUninitializedUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsUninitializedUnitTest.java
deleted file mode 100644
index 10b0aa6626..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsUninitializedUnitTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.baeldung.mockito;
-
-
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.when;
-
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-
-import java.util.List;
-
-class MockitoAnnotationsUninitializedUnitTest {
-
- @Mock
- List mockedList;
-
- @Test
- void whenMockitoAnnotationsUninitialized_thenNPEThrown() {
- assertThrows(NullPointerException.class, () -> {
- when(mockedList.size()).thenReturn(1);
- });
- }
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoExceptionUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoExceptionUnitTest.java
deleted file mode 100644
index 843edd8d0a..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoExceptionUnitTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.baeldung.mockito;
-
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mockito;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class MockitoExceptionUnitTest {
-
- @Test
- void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() {
- MyDictionary dictMock = mock(MyDictionary.class);
- when(dictMock.getMeaning(anyString())).thenThrow(NullPointerException.class);
- assertThrows(NullPointerException.class, () -> {
- dictMock.getMeaning("word");
- });
-
- }
-
- @Test
- void whenConfigVoidRetunMethodToThrowEx_thenExIsThrown() {
- MyDictionary dictMock = mock(MyDictionary.class);
- doThrow(IllegalStateException.class).when(dictMock)
- .add(anyString(), anyString());
- assertThrows(IllegalStateException.class, () -> {
- dictMock.add("word", "meaning");
- });
-
- }
-
- @Test
- void whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() {
- MyDictionary dictMock = mock(MyDictionary.class);
- when(dictMock.getMeaning(anyString())).thenThrow(new NullPointerException("Error occurred"));
- assertThrows(NullPointerException.class, () -> {
- dictMock.getMeaning("word");
- });
-
- }
-
- @Test
- void whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() {
- MyDictionary dictMock = mock(MyDictionary.class);
- doThrow(new IllegalStateException("Error occurred")).when(dictMock)
- .add(anyString(), anyString());
- assertThrows(IllegalStateException.class, () -> {
- dictMock.add("word", "meaning");
- });
-
- }
-
- // =====
-
- @Test
- void givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() {
- MyDictionary dict = new MyDictionary();
- MyDictionary spy = Mockito.spy(dict);
- when(spy.getMeaning(anyString())).thenThrow(NullPointerException.class);
- assertThrows(NullPointerException.class, () -> {
- spy.getMeaning("word");
- });
- }
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoMockUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoMockUnitTest.java
deleted file mode 100644
index 6e9167f0d0..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoMockUnitTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.baeldung.mockito;
-
-import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.withSettings;
-
-import org.junit.jupiter.api.Test;
-import org.mockito.MockSettings;
-import org.mockito.exceptions.verification.TooFewActualInvocations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-class MockitoMockUnitTest {
-
- @Test
- void whenUsingSimpleMock_thenCorrect() {
- MyList listMock = mock(MyList.class);
- when(listMock.add(anyString())).thenReturn(false);
- boolean added = listMock.add(randomAlphabetic(6));
-
- verify(listMock).add(anyString());
- assertThat(added).isFalse();
- }
-
- @Test
- void whenUsingMockWithName_thenCorrect() {
- MyList listMock = mock(MyList.class, "myMock");
- when(listMock.add(anyString())).thenReturn(false);
- listMock.add(randomAlphabetic(6));
-
- assertThatThrownBy(() -> verify(listMock, times(2)).add(anyString()))
- .isInstanceOf(TooFewActualInvocations.class)
- .hasMessageContaining("myMock.add");
- }
-
- private static class CustomAnswer implements Answer {
- @Override
- public Boolean answer(InvocationOnMock invocation) throws Throwable {
- return false;
- }
- }
-
- @Test
- void whenUsingMockWithAnswer_thenCorrect() {
- MyList listMock = mock(MyList.class, new CustomAnswer());
- boolean added = listMock.add(randomAlphabetic(6));
-
- verify(listMock).add(anyString());
- assertThat(added).isFalse();
- }
-
- @Test
- void whenUsingMockWithSettings_thenCorrect() {
- MockSettings customSettings = withSettings().defaultAnswer(new CustomAnswer());
- MyList listMock = mock(MyList.class, customSettings);
- boolean added = listMock.add(randomAlphabetic(6));
-
- verify(listMock).add(anyString());
- assertThat(added).isFalse();
- }
-}
\ No newline at end of file
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesUnitTest.java
deleted file mode 100644
index a236fc7cfc..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesUnitTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.baeldung.mockito;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.atMost;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoInteractions;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import java.util.List;
-
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.InOrder;
-import org.mockito.exceptions.verification.NoInteractionsWanted;
-
-import com.google.common.collect.Lists;
-
-class MockitoVerifyExamplesUnitTest {
-
- // tests
-
- @Test
- final void givenInteractionWithMockOccurred_whenVerifyingInteraction_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.size();
- verify(mockedList).size();
- }
-
- @Test
- final void givenOneInteractionWithMockOccurred_whenVerifyingNumberOfInteractions_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.size();
- verify(mockedList, times(1)).size();
- }
-
- @Test
- final void givenNoInteractionWithMockOccurred_whenVerifyingInteractions_thenCorrect() {
- final List mockedList = mock(MyList.class);
- verifyNoInteractions(mockedList);
- }
-
- @Test
- final void givenNoInteractionWithMethodOfMockOccurred_whenVerifyingInteractions_thenCorrect() {
- final List mockedList = mock(MyList.class);
- verify(mockedList, times(0)).size();
- }
-
- @Test
- final void givenUnverifiedInteraction_whenVerifyingNoUnexpectedInteractions_thenFail() {
- final List mockedList = mock(MyList.class);
- mockedList.size();
- mockedList.clear();
-
- verify(mockedList).size();
- assertThrows(NoInteractionsWanted.class, () -> {
- verifyNoMoreInteractions(mockedList);
- });
-
- }
-
- @Test
- final void whenVerifyingOrderOfInteractions_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.size();
- mockedList.add("a parameter");
- mockedList.clear();
-
- final InOrder inOrder = inOrder(mockedList);
- inOrder.verify(mockedList).size();
- inOrder.verify(mockedList).add("a parameter");
- inOrder.verify(mockedList).clear();
- }
-
- @Test
- final void whenVerifyingAnInteractionHasNotOccurred_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.size();
-
- verify(mockedList, never()).clear();
- }
-
- @Test
- final void whenVerifyingAnInteractionHasOccurredAtLeastOnce_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.clear();
- mockedList.clear();
- mockedList.clear();
-
- verify(mockedList, atLeast(1)).clear();
- verify(mockedList, atMost(10)).clear();
- }
-
- // with arguments
-
- @Test
- final void whenVerifyingAnInteractionWithExactArgument_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.add("test");
-
- verify(mockedList).add("test");
- }
-
- @Test
- final void whenVerifyingAnInteractionWithAnyArgument_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.add("test");
-
- verify(mockedList).add(anyString());
- }
-
- @Test
- final void whenVerifyingAnInteractionWithArgumentCapture_thenCorrect() {
- final List mockedList = mock(MyList.class);
- mockedList.addAll(Lists.newArrayList("someElement"));
-
- final ArgumentCaptor> argumentCaptor = ArgumentCaptor.forClass(List.class);
- verify(mockedList).addAll(argumentCaptor.capture());
-
- final List capturedArgument = argumentCaptor.getValue();
- assertThat(capturedArgument).contains("someElement");
- }
-
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoWhenThenExamplesUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoWhenThenExamplesUnitTest.java
deleted file mode 100644
index c570629ccd..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoWhenThenExamplesUnitTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.baeldung.mockito;
-
-import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import org.junit.jupiter.api.Test;
-
-
-class MockitoWhenThenExamplesUnitTest {
-
- @Test
- final void whenMockReturnBehaviorIsConfigured_thenBehaviorIsVerified() {
- final MyList listMock = mock(MyList.class);
- when(listMock.add(anyString())).thenReturn(false);
-
- final boolean added = listMock.add(randomAlphabetic(6));
- assertThat(added).isFalse();
- }
-
- @Test
- final void whenMockReturnBehaviorIsConfigured2_thenBehaviorIsVerified() {
- final MyList listMock = mock(MyList.class);
- doReturn(false).when(listMock).add(anyString());
-
- final boolean added = listMock.add(randomAlphabetic(6));
- assertThat(added).isFalse();
- }
-
- @Test
- final void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() {
- final MyList listMock = mock(MyList.class);
- when(listMock.add(anyString())).thenThrow(IllegalStateException.class);
-
- assertThrows(IllegalStateException.class, () -> {
- listMock.add(randomAlphabetic(6));
- });
-
- }
-
- @Test
- final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingOnlyOnce_thenNoExceptionIsThrown() {
- final MyList listMock = mock(MyList.class);
- when(listMock.add(anyString())).thenReturn(false).thenThrow(IllegalStateException.class);
-
- listMock.add(randomAlphabetic(6));
- }
-
- @Test
- final void whenMethodHasNoReturnType_whenConfiguringBehaviorOfMethod_thenPossible() {
- final MyList listMock = mock(MyList.class);
- doThrow(NullPointerException.class).when(listMock).clear();
-
- assertThrows(NullPointerException.class, () -> {
- listMock.clear();
- });
-
- }
-
- @Test
- final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingTwice_thenExceptionIsThrown() {
- final MyList listMock = mock(MyList.class);
- when(listMock.add(anyString())).thenReturn(false).thenThrow(IllegalStateException.class);
-
- assertThrows(IllegalStateException.class, () -> {
- listMock.add(randomAlphabetic(6));
- listMock.add(randomAlphabetic(6));
- });
-
- }
-
- @Test
- final void givenSpy_whenConfiguringBehaviorOfSpy_thenCorrectlyConfigured() {
- final MyList instance = new MyList();
- final MyList spy = spy(instance);
-
- doThrow(NullPointerException.class).when(spy).size();
- assertThrows(NullPointerException.class, () -> {
- spy.size();
- });
-
- }
-
- @Test
- final void whenMockMethodCallIsConfiguredToCallTheRealMethod_thenRealMethodIsCalled() {
- final MyList listMock = mock(MyList.class);
- when(listMock.size()).thenCallRealMethod();
-
- assertThat(listMock).hasSize(1);
- }
-
- @Test
- final void whenMockMethodCallIsConfiguredWithCustomAnswer_thenRealMethodIsCalled() {
- final MyList listMock = mock(MyList.class);
- doAnswer(invocation -> "Always the same").when(listMock).get(anyInt());
-
- final String element = listMock.get(1);
- assertThat(element).isEqualTo("Always the same");
- }
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyDictionary.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyDictionary.java
index 92a4498696..6877d7fb6a 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyDictionary.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyDictionary.java
@@ -3,23 +3,23 @@ package com.baeldung.mockito;
import java.util.HashMap;
import java.util.Map;
-class MyDictionary {
+public class MyDictionary {
- private Map wordMap;
+ private Map wordMap;
- MyDictionary() {
- wordMap = new HashMap<>();
- }
+ public MyDictionary() {
+ wordMap = new HashMap<>();
+ }
- MyDictionary(Map wordMap) {
- this.wordMap = wordMap;
- }
+ public MyDictionary(Map wordMap) {
+ this.wordMap = wordMap;
+ }
- public void add(final String word, final String meaning) {
- wordMap.put(word, meaning);
- }
+ public void add(final String word, final String meaning) {
+ wordMap.put(word, meaning);
+ }
- String getMeaning(final String word) {
- return wordMap.get(word);
- }
+ public String getMeaning(final String word) {
+ return wordMap.get(word);
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyList.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyList.java
index ac3a76e04a..8324af8ae8 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyList.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MyList.java
@@ -4,22 +4,22 @@ import java.util.AbstractList;
public class MyList extends AbstractList {
- @Override
- public String get(final int index) {
- return null;
- }
+ @Override
+ public String get(final int index) {
+ return null;
+ }
- @Override
- public int size() {
- return 1;
- }
+ @Override
+ public int size() {
+ return 1;
+ }
- @Override
- public void add(int index, String element) {
- // no-op
- }
+ @Override
+ public void add(int index, String element) {
+ // no-op
+ }
- final public int finalMethod() {
- return 0;
- }
+ final public int finalMethod() {
+ return 0;
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationUnitTest.java
new file mode 100644
index 0000000000..5e12b5c34a
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationUnitTest.java
@@ -0,0 +1,130 @@
+package com.baeldung.mockito.annotations;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import com.baeldung.mockito.MyDictionary;
+
+@ExtendWith(MockitoExtension.class)
+class MockitoAnnotationUnitTest {
+
+ @Mock
+ private List mockedList;
+
+ @Spy
+ private List spiedList = new ArrayList<>();
+
+ // Use either @ExtendWith(MockitoExtension.class) or manually openMocks in the @BeforeEach method
+ /*
+ @BeforeEach
+ public void init() {
+ MockitoAnnotations.openMocks(this);
+ }
+ */
+
+ // tests
+
+ @Test
+ void whenNotUseMockAnnotation_thenCorrect() {
+ final List mockList = mock(ArrayList.class);
+
+ mockList.add("one");
+ verify(mockList).add("one");
+ assertEquals(0, mockList.size());
+
+ when(mockList.size()).thenReturn(100);
+ assertEquals(100, mockList.size());
+ }
+
+ @Test
+ void whenUseMockAnnotation_thenMockIsInjected() {
+ mockedList.add("one");
+ verify(mockedList).add("one");
+ assertEquals(0, mockedList.size());
+
+ when(mockedList.size()).thenReturn(100);
+ assertEquals(100, mockedList.size());
+ }
+
+ @Test
+ void whenNotUseSpyAnnotation_thenCorrect() {
+ final List spyList = spy(new ArrayList());
+
+ spyList.add("one");
+ spyList.add("two");
+
+ verify(spyList).add("one");
+ verify(spyList).add("two");
+
+ assertEquals(2, spyList.size());
+
+ doReturn(100).when(spyList).size();
+ assertEquals(100, spyList.size());
+ }
+
+ @Test
+ void whenUseSpyAnnotation_thenSpyIsInjectedCorrectly() {
+ spiedList.add("one");
+ spiedList.add("two");
+
+ verify(spiedList).add("one");
+ verify(spiedList).add("two");
+
+ assertEquals(2, spiedList.size());
+
+ doReturn(100).when(spiedList).size();
+ assertEquals(100, spiedList.size());
+ }
+
+ @Test
+ void whenNotUseCaptorAnnotation_thenCorrect() {
+ final List mockList = mock(List.class);
+ final ArgumentCaptor arg = ArgumentCaptor.forClass(String.class);
+
+ mockList.add("one");
+ verify(mockList).add(arg.capture());
+
+ assertEquals("one", arg.getValue());
+ }
+
+ @Captor
+ private ArgumentCaptor argCaptor;
+
+ @Test
+ void whenUseCaptorAnnotation_thenTheSame() {
+ mockedList.add("one");
+ verify(mockedList).add(argCaptor.capture());
+
+ assertEquals("one", argCaptor.getValue());
+ }
+
+ @Mock
+ private Map wordMap;
+
+ @InjectMocks
+ private MyDictionary dic = new MyDictionary();
+
+ @Test
+ void whenUseInjectMocksAnnotation_thenCorrect() {
+ when(wordMap.get("aWord")).thenReturn("aMeaning");
+
+ assertEquals("aMeaning", dic.getMeaning("aWord"));
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest.java
similarity index 51%
rename from testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest.java
rename to testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest.java
index 512f538a58..437462fcb4 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.mockito;
+package com.baeldung.mockito.annotations;
import org.junit.Rule;
import org.junit.Test;
@@ -6,25 +6,23 @@ import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
-
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
-
public class MockitoAnnotationsInitWithMockitoJUnitRuleUnitTest {
- @Rule
- public MockitoRule initRule = MockitoJUnit.rule();
+ @Rule
+ public MockitoRule initRule = MockitoJUnit.rule();
- @Mock
- private List mockedList;
+ @Mock
+ private List mockedList;
- @Test
- public void whenUsingMockitoJUnitRule_thenMocksInitialized() {
- when(mockedList.size()).thenReturn(41);
+ @Test
+ public void whenUsingMockitoJUnitRule_thenMocksInitialized() {
+ when(mockedList.size()).thenReturn(41);
- assertThat(mockedList).hasSize(41);
- }
+ assertThat(mockedList).hasSize(41);
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsInjectIntoSpyUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsInjectIntoSpyUnitTest.java
similarity index 52%
rename from testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsInjectIntoSpyUnitTest.java
rename to testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsInjectIntoSpyUnitTest.java
index 89a253c855..44b8d5ec8f 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/MockitoAnnotationsInjectIntoSpyUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsInjectIntoSpyUnitTest.java
@@ -1,11 +1,12 @@
-package com.baeldung.mockito;
-
+package com.baeldung.mockito.annotations;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.openMocks;
+import java.util.Map;
+
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -13,30 +14,29 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.Map;
-
+import com.baeldung.mockito.MyDictionary;
@ExtendWith(MockitoExtension.class)
class MockitoAnnotationsInjectIntoSpyUnitTest {
- @BeforeEach
- public void init() {
- openMocks(this);
- spyDic = spy(new MyDictionary(wordMap));
- }
+ @BeforeEach
+ public void init() {
+ openMocks(this);
+ spyDic = spy(new MyDictionary(wordMap));
+ }
- @Mock
- private Map wordMap;
+ @Mock
+ private Map wordMap;
- @InjectMocks
- private MyDictionary dic = new MyDictionary();
+ @InjectMocks
+ private MyDictionary dic = new MyDictionary();
- private MyDictionary spyDic;
+ private MyDictionary spyDic;
- @Test
- void whenUseInjectMocksAnnotation_thenCorrect() {
- when(wordMap.get("aWord")).thenReturn("aMeaning");
+ @Test
+ void whenUseInjectMocksAnnotation_thenCorrect() {
+ when(wordMap.get("aWord")).thenReturn("aMeaning");
- assertEquals("aMeaning", spyDic.getMeaning("aWord"));
- }
+ assertEquals("aMeaning", spyDic.getMeaning("aWord"));
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsUninitializedUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsUninitializedUnitTest.java
new file mode 100644
index 0000000000..1b7db32c37
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/annotations/MockitoAnnotationsUninitializedUnitTest.java
@@ -0,0 +1,22 @@
+package com.baeldung.mockito.annotations;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.when;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+
+class MockitoAnnotationsUninitializedUnitTest {
+
+ @Mock
+ List mockedList;
+
+ @Test
+ void whenMockitoAnnotationsUninitialized_thenNPEThrown() {
+ assertThrows(NullPointerException.class, () -> {
+ when(mockedList.size()).thenReturn(1);
+ });
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java
index 36c26659a6..a0d542e152 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java
@@ -18,84 +18,84 @@ import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
class EmailServiceUnitTest {
- @Mock
- DeliveryPlatform platform;
+ @Mock
+ DeliveryPlatform platform;
- @InjectMocks
- EmailService emailService;
+ @InjectMocks
+ EmailService emailService;
- @Captor
- ArgumentCaptor emailCaptor;
+ @Captor
+ ArgumentCaptor emailCaptor;
- @Captor
- ArgumentCaptor credentialsCaptor;
+ @Captor
+ ArgumentCaptor credentialsCaptor;
- @Test
- void whenDoesNotSupportHtml_expectTextOnlyEmailFormat() {
- String to = "info@baeldung.com";
- String subject = "Using ArgumentCaptor";
- String body = "Hey, let'use ArgumentCaptor";
+ @Test
+ void whenDoesNotSupportHtml_expectTextOnlyEmailFormat() {
+ String to = "info@baeldung.com";
+ String subject = "Using ArgumentCaptor";
+ String body = "Hey, let'use ArgumentCaptor";
- emailService.send(to, subject, body, false);
+ emailService.send(to, subject, body, false);
- verify(platform).deliver(emailCaptor.capture());
- Email emailCaptorValue = emailCaptor.getValue();
- assertThat(emailCaptorValue.getFormat()).isEqualTo(Format.TEXT_ONLY);
- }
+ verify(platform).deliver(emailCaptor.capture());
+ Email emailCaptorValue = emailCaptor.getValue();
+ assertThat(emailCaptorValue.getFormat()).isEqualTo(Format.TEXT_ONLY);
+ }
- @Test
- void whenDoesSupportHtml_expectHTMLEmailFormat() {
- String to = "info@baeldung.com";
- String subject = "Using ArgumentCaptor";
- String body = "Hey, let'use ArgumentCaptor";
+ @Test
+ void whenDoesSupportHtml_expectHTMLEmailFormat() {
+ String to = "info@baeldung.com";
+ String subject = "Using ArgumentCaptor";
+ String body = "Hey, let'use ArgumentCaptor";
- emailService.send(to, subject, body, true);
+ emailService.send(to, subject, body, true);
- verify(platform).deliver(emailCaptor.capture());
- Email value = emailCaptor.getValue();
- assertThat(value.getFormat()).isEqualTo(Format.HTML);
- }
+ verify(platform).deliver(emailCaptor.capture());
+ Email value = emailCaptor.getValue();
+ assertThat(value.getFormat()).isEqualTo(Format.HTML);
+ }
- @Test
- void whenServiceRunning_expectUpResponse() {
- when(platform.getServiceStatus()).thenReturn("OK");
+ @Test
+ void whenServiceRunning_expectUpResponse() {
+ when(platform.getServiceStatus()).thenReturn("OK");
- ServiceStatus serviceStatus = emailService.checkServiceStatus();
+ ServiceStatus serviceStatus = emailService.checkServiceStatus();
- assertThat(serviceStatus).isEqualTo(ServiceStatus.UP);
- }
+ assertThat(serviceStatus).isEqualTo(ServiceStatus.UP);
+ }
- @Test
- void whenServiceNotRunning_expectDownResponse() {
- when(platform.getServiceStatus()).thenReturn("Error");
+ @Test
+ void whenServiceNotRunning_expectDownResponse() {
+ when(platform.getServiceStatus()).thenReturn("Error");
- ServiceStatus serviceStatus = emailService.checkServiceStatus();
+ ServiceStatus serviceStatus = emailService.checkServiceStatus();
- assertThat(serviceStatus).isEqualTo(ServiceStatus.DOWN);
- }
+ assertThat(serviceStatus).isEqualTo(ServiceStatus.DOWN);
+ }
- @Test
- void whenUsingArgumentMatcherForValidCredentials_expectTrue() {
- Credentials credentials = new Credentials("baeldung", "correct_password", "correct_key");
- when(platform.authenticate(eq(credentials))).thenReturn(AuthenticationStatus.AUTHENTICATED);
+ @Test
+ void whenUsingArgumentMatcherForValidCredentials_expectTrue() {
+ Credentials credentials = new Credentials("baeldung", "correct_password", "correct_key");
+ when(platform.authenticate(eq(credentials))).thenReturn(AuthenticationStatus.AUTHENTICATED);
- assertTrue(emailService.authenticatedSuccessfully(credentials));
- }
+ assertTrue(emailService.authenticatedSuccessfully(credentials));
+ }
- @Test
- void whenUsingArgumentCaptorForValidCredentials_expectTrue() {
- Credentials credentials = new Credentials("baeldung", "correct_password", "correct_key");
- when(platform.authenticate(credentialsCaptor.capture())).thenReturn(AuthenticationStatus.AUTHENTICATED);
+ @Test
+ void whenUsingArgumentCaptorForValidCredentials_expectTrue() {
+ Credentials credentials = new Credentials("baeldung", "correct_password", "correct_key");
+ when(platform.authenticate(credentialsCaptor.capture())).thenReturn(AuthenticationStatus.AUTHENTICATED);
- assertTrue(emailService.authenticatedSuccessfully(credentials));
- assertThat(credentialsCaptor.getValue()).isEqualTo(credentials);
- }
+ assertTrue(emailService.authenticatedSuccessfully(credentials));
+ assertThat(credentialsCaptor.getValue()).isEqualTo(credentials);
+ }
- @Test
- void whenNotAuthenticated_expectFalse() {
- Credentials credentials = new Credentials("baeldung", "incorrect_password", "incorrect_key");
- when(platform.authenticate(eq(credentials))).thenReturn(AuthenticationStatus.NOT_AUTHENTICATED);
+ @Test
+ void whenNotAuthenticated_expectFalse() {
+ Credentials credentials = new Credentials("baeldung", "incorrect_password", "incorrect_key");
+ when(platform.authenticate(eq(credentials))).thenReturn(AuthenticationStatus.NOT_AUTHENTICATED);
- assertFalse(emailService.authenticatedSuccessfully(credentials));
- }
+ assertFalse(emailService.authenticatedSuccessfully(credentials));
+ }
}
\ No newline at end of file
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/app/rest/FlowerControllerUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/FlowerControllerUnitTest.java
similarity index 65%
rename from testing-modules/mockito-simple/src/test/java/com/baeldung/app/rest/FlowerControllerUnitTest.java
rename to testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/FlowerControllerUnitTest.java
index d611cd9e45..5db7f2e112 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/app/rest/FlowerControllerUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/FlowerControllerUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.app.rest;
+package com.baeldung.mockito.argumentmatchers;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -18,8 +18,8 @@ import org.mockito.Mock;
import org.mockito.exceptions.misusing.InvalidUseOfMatchersException;
import org.mockito.junit.jupiter.MockitoExtension;
-import com.baeldung.app.api.Flower;
-import com.baeldung.domain.service.FlowerService;
+import com.baeldung.mockito.argumentmatchers.controller.FlowerController;
+import com.baeldung.mockito.argumentmatchers.service.FlowerService;
@ExtendWith(MockitoExtension.class)
class FlowerControllerUnitTest {
@@ -39,7 +39,7 @@ class FlowerControllerUnitTest {
}
@Test
- void givenAnyString_whenUsingArgumentMatcher_thenCorrect() {
+ void givenAnyFlower_whenUsingArgumentMatcher_thenCorrect() {
when(flowerService.analyze(anyString())).thenReturn("Flower");
String response = flowerController.isAFlower("violetta");
@@ -47,19 +47,13 @@ class FlowerControllerUnitTest {
}
@Test
- void whenIncorrectMatchers_thenThrowsError() {
- assertThrows(InvalidUseOfMatchersException.class, () -> {
- when(flowerService.isABigFlower("poppy", anyInt())).thenReturn(true);
- });
-
- Flower flower = new Flower("poppy", 15);
-
- Boolean response = flowerController.isABigFlower(flower);
- assertThat(response).isFalse();
+ void givenIncorrectMatchers_whenUsingArgumentMatchers_thenThrowsError() {
+ assertThrows(InvalidUseOfMatchersException.class,
+ () -> when(flowerService.isABigFlower("poppy", anyInt())).thenReturn(true));
}
@Test
- void whenCorrectMatchers_thenCorrect() {
+ void givenCorrectMatchers_whenUsingArgumentMatchers_thenCorrect() {
when(flowerService.isABigFlower(eq("poppy"), anyInt())).thenReturn(true);
Flower flower = new Flower("poppy", 15);
@@ -69,26 +63,18 @@ class FlowerControllerUnitTest {
}
@Test
- void whenUsingMatchersAsReturnValue_thenThrowsError() {
+ void givenMatchersOutsideofStubbing_whenUsingMatchersAsReturnValue_thenThrowsError() {
flowerController.isAFlower("poppy");
String orMatcher = or(eq("poppy"), endsWith("y"));
- assertThrows(InvalidUseOfMatchersException.class, () -> {
- verify(flowerService).analyze(orMatcher);
- });
+ assertThrows(InvalidUseOfMatchersException.class,
+ () -> verify(flowerService).analyze(orMatcher));
}
@Test
- void whenUsingMatchersAsOngoingStubbing_thenCorrect1() {
+ void givenMatchersAsOngoingStubbing_whenUsingMatchers_thenCorrect() {
flowerController.isAFlower("poppy");
verify(flowerService).analyze(or(eq("poppy"), endsWith("y")));
}
-
- @Test
- void whenUsingMatchersAsOngoingStubbing_thenCorrect2() {
- flowerController.isAFlower("lily");
-
- verify(flowerService).analyze(or(eq("poppy"), endsWith("y")));
- }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/MessageControllerUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/MessageControllerUnitTest.java
new file mode 100644
index 0000000000..5a64f37696
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/MessageControllerUnitTest.java
@@ -0,0 +1,54 @@
+package com.baeldung.mockito.argumentmatchers;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import com.baeldung.mockito.argumentmatchers.controller.MessageController;
+import com.baeldung.mockito.argumentmatchers.service.MessageService;
+
+@ExtendWith(MockitoExtension.class)
+class MessageControllerUnitTest {
+
+ @InjectMocks
+ private MessageController messageController;
+
+ @Mock
+ private MessageService messageService;
+
+ @Test
+ void givenMsg_whenVerifyUsingAnyMatcher_thenOk() {
+ MessageDTO messageDTO = new MessageDTO();
+ messageDTO.setFrom("me");
+ messageDTO.setTo("you");
+ messageDTO.setText("Hello, you!");
+
+ messageController.createMessage(messageDTO);
+
+ verify(messageService, times(1)).deliverMessage(any(Message.class));
+ }
+
+ @Test
+ void givenMsg_whenVerifyUsingMessageMatcher_thenOk() {
+ MessageDTO messageDTO = new MessageDTO();
+ messageDTO.setFrom("me");
+ messageDTO.setTo("you");
+ messageDTO.setText("Hello, you!");
+
+ messageController.createMessage(messageDTO);
+
+ Message message = new Message();
+ message.setFrom("me");
+ message.setTo("you");
+ message.setText("Hello, you!");
+
+ verify(messageService, times(1)).deliverMessage(argThat(new MessageMatcher(message)));
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/domain/util/MessageMatcher.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/MessageMatcher.java
similarity index 86%
rename from testing-modules/mockito-simple/src/test/java/com/baeldung/domain/util/MessageMatcher.java
rename to testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/MessageMatcher.java
index 51db07fde7..e50c8ac9d7 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/domain/util/MessageMatcher.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/argumentmatchers/MessageMatcher.java
@@ -1,6 +1,5 @@
-package com.baeldung.domain.util;
+package com.baeldung.mockito.argumentmatchers;
-import com.baeldung.domain.model.Message;
import org.mockito.ArgumentMatcher;
public class MessageMatcher implements ArgumentMatcher {
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/behaviour/MockitoWhenThenExamplesUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/behaviour/MockitoWhenThenExamplesUnitTest.java
new file mode 100644
index 0000000000..4fd70007ab
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/behaviour/MockitoWhenThenExamplesUnitTest.java
@@ -0,0 +1,105 @@
+package com.baeldung.mockito.behaviour;
+
+import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatNoException;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import org.junit.jupiter.api.Test;
+
+import com.baeldung.mockito.MyList;
+
+class MockitoWhenThenExamplesUnitTest {
+
+ @Test
+ final void whenSimpleReturnBehaviourConfigured_thenCorrect() {
+ final MyList listMock = mock(MyList.class);
+ when(listMock.add(anyString())).thenReturn(false);
+
+ final boolean added = listMock.add(randomAlphabetic(6));
+ assertThat(added).isFalse();
+ }
+
+ @Test
+ final void whenSimpleReturnBehaviourConfiguredAlternatively_thenCorrect() {
+ final MyList listMock = mock(MyList.class);
+ doReturn(false).when(listMock).add(anyString());
+
+ final boolean added = listMock.add(randomAlphabetic(6));
+ assertThat(added).isFalse();
+ }
+
+ @Test
+ final void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() {
+ final MyList listMock = mock(MyList.class);
+ when(listMock.add(anyString())).thenThrow(IllegalStateException.class);
+
+ assertThrows(IllegalStateException.class, () -> listMock.add(randomAlphabetic(6)));
+ }
+
+ @Test
+ final void givenMethodHasNoReturnType_whenCallingMethod_thenExceptionIsThrown() {
+ final MyList listMock = mock(MyList.class);
+ doThrow(NullPointerException.class).when(listMock).clear();
+
+ assertThrows(NullPointerException.class, () -> listMock.clear());
+ }
+
+ @Test
+ final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingTwice_thenExceptionIsThrown() {
+ final MyList listMock = mock(MyList.class);
+ when(listMock.add(anyString()))
+ .thenReturn(false)
+ .thenThrow(IllegalStateException.class);
+
+ assertThrows(IllegalStateException.class, () -> {
+ listMock.add(randomAlphabetic(6));
+ listMock.add(randomAlphabetic(6));
+ });
+ }
+
+ @Test
+ final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingOnlyOnce_thenNoExceptionIsThrown() {
+ final MyList listMock = mock(MyList.class);
+ when(listMock.add(anyString()))
+ .thenReturn(false)
+ .thenThrow(IllegalStateException.class);
+
+ assertThatNoException().isThrownBy(() -> listMock.add(randomAlphabetic(6)));
+ }
+
+ @Test
+ final void whenSpyBehaviourConfigured_thenCorrect() {
+ final MyList instance = new MyList();
+ final MyList spy = spy(instance);
+
+ doThrow(NullPointerException.class).when(spy).size();
+
+ assertThrows(NullPointerException.class, () -> spy.size());
+ }
+
+ @Test
+ final void whenMockMethodCallIsConfiguredToCallTheRealMethod_thenRealMethodIsCalled() {
+ final MyList listMock = mock(MyList.class);
+ when(listMock.size()).thenCallRealMethod();
+
+ assertThat(listMock).hasSize(1);
+ }
+
+ @Test
+ final void whenMockMethodCallIsConfiguredWithCustomAnswer_thenCustomerAnswerIsCalled() {
+ final MyList listMock = mock(MyList.class);
+ doAnswer(invocation -> "Always the same").when(listMock).get(anyInt());
+
+ final String element = listMock.get(1);
+ assertThat(element).isEqualTo("Always the same");
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/exceptions/MockitoExceptionUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/exceptions/MockitoExceptionUnitTest.java
new file mode 100644
index 0000000000..b612749328
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/exceptions/MockitoExceptionUnitTest.java
@@ -0,0 +1,57 @@
+package com.baeldung.mockito.exceptions;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+import com.baeldung.mockito.MyDictionary;
+
+class MockitoExceptionUnitTest {
+
+ @Test
+ void givenNonVoidReturnType_whenUsingWhenThen_thenExceptionIsThrown() {
+ MyDictionary dictMock = mock(MyDictionary.class);
+ when(dictMock.getMeaning(anyString())).thenThrow(NullPointerException.class);
+
+ assertThrows(NullPointerException.class, () -> dictMock.getMeaning("word"));
+ }
+
+ @Test
+ void givenVoidReturnType_whenUsingDoThrow_thenExceptionIsThrown() {
+ MyDictionary dictMock = mock(MyDictionary.class);
+ doThrow(IllegalStateException.class).when(dictMock).add(anyString(), anyString());
+
+ assertThrows(IllegalStateException.class, () -> dictMock.add("word", "meaning"));
+ }
+
+ @Test
+ void givenNonVoidReturnType_whenUsingWhenThenAndExeceptionAsNewObject_thenExceptionIsThrown() {
+ MyDictionary dictMock = mock(MyDictionary.class);
+ when(dictMock.getMeaning(anyString())).thenThrow(new NullPointerException("Error occurred"));
+
+ assertThrows(NullPointerException.class, () -> dictMock.getMeaning("word"));
+ }
+
+ @Test
+ void givenNonVoidReturnType_whenUsingDoThrowAndExeceptionAsNewObject_thenExceptionIsThrown() {
+ MyDictionary dictMock = mock(MyDictionary.class);
+ doThrow(new IllegalStateException("Error occurred")).when(dictMock).add(anyString(), anyString());
+
+ assertThrows(IllegalStateException.class, () -> dictMock.add("word", "meaning"));
+
+ }
+
+ @Test
+ void givenSpyAndNonVoidReturnType_whenUsingWhenThen_thenExceptionIsThrown() {
+ MyDictionary dict = new MyDictionary();
+ MyDictionary spy = Mockito.spy(dict);
+ when(spy.getMeaning(anyString())).thenThrow(NullPointerException.class);
+
+ assertThrows(NullPointerException.class, () -> spy.getMeaning("word"));
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/junit5/mockito/UserServiceUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/junit5/UserServiceUnitTest.java
similarity index 87%
rename from testing-modules/mockito-simple/src/test/java/com/baeldung/junit5/mockito/UserServiceUnitTest.java
rename to testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/junit5/UserServiceUnitTest.java
index cc38d617b7..461e377a39 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/junit5/mockito/UserServiceUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/junit5/UserServiceUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.junit5.mockito;
+package com.baeldung.mockito.junit5;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -18,12 +18,12 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.stubbing.Answer;
-import com.baeldung.junit5.mockito.repository.MailClient;
-import com.baeldung.junit5.mockito.repository.SettingRepository;
-import com.baeldung.junit5.mockito.repository.UserRepository;
-import com.baeldung.junit5.mockito.service.DefaultUserService;
-import com.baeldung.junit5.mockito.service.Errors;
-import com.baeldung.junit5.mockito.service.UserService;
+import com.baeldung.mockito.junit5.repository.MailClient;
+import com.baeldung.mockito.junit5.repository.SettingRepository;
+import com.baeldung.mockito.junit5.repository.UserRepository;
+import com.baeldung.mockito.junit5.service.DefaultUserService;
+import com.baeldung.mockito.junit5.service.Errors;
+import com.baeldung.mockito.junit5.service.UserService;
@ExtendWith(MockitoExtension.class)
class UserServiceUnitTest {
@@ -43,11 +43,14 @@ class UserServiceUnitTest {
@BeforeEach
void init(@Mock SettingRepository settingRepository) {
userService = new DefaultUserService(userRepository, settingRepository, mailClient);
- lenient().when(settingRepository.getUserMinAge())
- .thenReturn(10);
+
+ lenient().when(settingRepository.getUserMinAge()).thenReturn(10);
+
when(settingRepository.getUserNameMinLength()).thenReturn(4);
+
lenient().when(userRepository.isUsernameAlreadyExists(any(String.class)))
.thenReturn(false);
+
this.settingRepository = settingRepository;
}
@@ -77,6 +80,8 @@ class UserServiceUnitTest {
verify(mailClient).sendUserRegistrationMail(insertedUser);
}
+ //additional tests
+
@Test
void givenShortName_whenSaveUser_thenGiveShortUsernameError() {
// Given
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockedstatic/MockedStaticUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockedstatic/MockedStaticUnitTest.java
deleted file mode 100644
index 309f066a87..0000000000
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockedstatic/MockedStaticUnitTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.baeldung.mockito.mockedstatic;
-
-import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.mockStatic;
-
-import java.util.Arrays;
-
-class MockedStaticUnitTest {
-
- @Test
- void givenStaticMethodWithNoArgs_whenMocked_thenReturnsMockSuccessfully() {
- assertThat(StaticUtils.name()).isEqualTo("Baeldung");
-
- try (MockedStatic utilities = mockStatic(StaticUtils.class)) {
- utilities.when(StaticUtils::name).thenReturn("Eugen");
- assertThat(StaticUtils.name()).isEqualTo("Eugen");
- }
-
- assertThat(StaticUtils.name()).isEqualTo("Baeldung");
- }
-
- @Test
- void givenStaticMethodWithArgs_whenMocked_thenReturnsMockSuccessfully() {
- assertThat(StaticUtils.range(2, 6)).containsExactly(2, 3, 4, 5);
-
- try (MockedStatic utilities = mockStatic(StaticUtils.class)) {
- utilities.when(() -> StaticUtils.range(2, 6))
- .thenReturn(Arrays.asList(10, 11, 12));
-
- assertThat(StaticUtils.range(2, 6)).containsExactly(10, 11, 12);
- }
-
- assertThat(StaticUtils.range(2, 6)).containsExactly(2, 3, 4, 5);
- }
-
-}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockfinal/MockFinalsUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockfinal/MockFinalsUnitTest.java
new file mode 100644
index 0000000000..10fd480015
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockfinal/MockFinalsUnitTest.java
@@ -0,0 +1,31 @@
+package com.baeldung.mockito.mockfinal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.jupiter.api.Test;
+
+import com.baeldung.mockito.FinalList;
+import com.baeldung.mockito.MyList;
+
+class MockFinalsUnitTest {
+
+ @Test
+ void whenMockFinalMethod_thenMockWorks() {
+
+ MyList mock = mock(MyList.class);
+ when(mock.finalMethod()).thenReturn(1);
+
+ assertThat(mock.finalMethod()).isNotZero();
+ }
+
+ @Test
+ void whenMockFinalClass_thenMockWorks() {
+
+ FinalList mock = mock(FinalList.class);
+ when(mock.size()).thenReturn(2);
+
+ assertThat(mock.size()).isNotEqualTo(1);
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockmethods/MockitoMockMethodsUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockmethods/MockitoMockMethodsUnitTest.java
new file mode 100644
index 0000000000..0a113ed143
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockmethods/MockitoMockMethodsUnitTest.java
@@ -0,0 +1,73 @@
+package com.baeldung.mockito.mockmethods;
+
+import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.MockSettings;
+import org.mockito.exceptions.verification.TooFewActualInvocations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import com.baeldung.mockito.MyList;
+
+class MockitoMockMethodsUnitTest {
+
+ @Test
+ void whenUsingSimpleMock_thenCorrect() {
+ MyList listMock = mock(MyList.class);
+ when(listMock.add(anyString())).thenReturn(false);
+
+ boolean added = listMock.add(randomAlphabetic(6));
+
+ assertThat(added).isFalse();
+ verify(listMock).add(anyString());
+ }
+
+ @Test
+ void givenFewActualInvocationThanConfigured_whenUsingMockWithName_thenExceptionIsThrown() {
+ MyList listMock = mock(MyList.class, "myMock");
+
+ when(listMock.add(anyString())).thenReturn(false);
+ listMock.add(randomAlphabetic(6));
+
+ assertThatThrownBy(() -> verify(listMock, times(2)).add(anyString()))
+ .isInstanceOf(TooFewActualInvocations.class)
+ .hasMessageContaining("myMock.add");
+ }
+
+ private static class CustomAnswer implements Answer {
+
+ @Override
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ return false;
+ }
+ }
+
+ @Test
+ void whenUsingMockWithAnswer_thenCorrect() {
+ MyList listMock = mock(MyList.class, new CustomAnswer());
+ boolean added = listMock.add(randomAlphabetic(6));
+
+ verify(listMock).add(anyString());
+ assertThat(added).isFalse();
+ }
+
+ @Test
+ void whenUsingMockWithSettings_thenCorrect() {
+ MockSettings customSettings = withSettings().defaultAnswer(new CustomAnswer());
+ MyList listMock = mock(MyList.class, customSettings);
+
+ boolean added = listMock.add(randomAlphabetic(6));
+
+ verify(listMock).add(anyString());
+ assertThat(added).isFalse();
+ }
+}
\ No newline at end of file
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockstatic/MockStaticUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockstatic/MockStaticUnitTest.java
new file mode 100644
index 0000000000..0d653940a4
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/mockstatic/MockStaticUnitTest.java
@@ -0,0 +1,41 @@
+package com.baeldung.mockito.mockstatic;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import com.baeldung.mockito.mockedstatic.StaticUtils;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.mockStatic;
+
+import java.util.Arrays;
+
+class MockStaticUnitTest {
+
+ @Test
+ void givenStaticMethodWithNoArgs_whenMocked_thenReturnsMockSuccessfully() {
+ assertThat(StaticUtils.name()).isEqualTo("Baeldung");
+
+ try (MockedStatic utilities = mockStatic(StaticUtils.class)) {
+ utilities.when(StaticUtils::name).thenReturn("Eugen");
+ assertThat(StaticUtils.name()).isEqualTo("Eugen");
+ }
+
+ assertThat(StaticUtils.name()).isEqualTo("Baeldung");
+ }
+
+ @Test
+ void givenStaticMethodWithArgs_whenMocked_thenReturnsMockSuccessfully() {
+ assertThat(StaticUtils.range(2, 6)).containsExactly(2, 3, 4, 5);
+
+ try (MockedStatic utilities = mockStatic(StaticUtils.class)) {
+ utilities.when(() -> StaticUtils.range(2, 6))
+ .thenReturn(Arrays.asList(10, 11, 12));
+
+ assertThat(StaticUtils.range(2, 6)).containsExactly(10, 11, 12);
+ }
+
+ assertThat(StaticUtils.range(2, 6)).containsExactly(2, 3, 4, 5);
+ }
+
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java
index caef0c3b4b..d154044191 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java
@@ -16,65 +16,66 @@ import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
-public class MockitoSpyUnitTest {
+class MockitoSpyUnitTest {
- @Test
- void whenSpyingOnList_thenCorrect() {
- final List list = new ArrayList();
- final List spyList = spy(list);
+ @Test
+ void givenUsingSpyMethod_whenSpyingOnList_thenCorrect() {
+ final List list = new ArrayList();
+ final List spyList = spy(list);
- spyList.add("one");
- spyList.add("two");
+ spyList.add("one");
+ spyList.add("two");
- verify(spyList).add("one");
- verify(spyList).add("two");
+ verify(spyList).add("one");
+ verify(spyList).add("two");
- assertThat(spyList).hasSize(2);
- }
+ assertThat(spyList).hasSize(2);
+ }
- @Spy
- private List aSpyList = new ArrayList();
+ @Spy
+ private List aSpyList = new ArrayList();
- @Test
- void whenUsingTheSpyAnnotation_thenObjectIsSpied() {
- aSpyList.add("one");
- aSpyList.add("two");
+ @Test
+ void givenUsingSpyAnnotation_whenSpyingOnList_thenCorrect() {
+ aSpyList.add("one");
+ aSpyList.add("two");
- verify(aSpyList).add("one");
- verify(aSpyList).add("two");
+ verify(aSpyList).add("one");
+ verify(aSpyList).add("two");
- assertThat(aSpyList).hasSize(2);
- }
+ assertThat(aSpyList).hasSize(2);
+ }
- @Test
- void whenStubASpy_thenStubbed() {
- final List list = new ArrayList();
- final List spyList = spy(list);
+ @Test
+ void givenASpy_whenStubbingTheBehaviour_thenCorrect() {
+ final List list = new ArrayList();
+ final List spyList = spy(list);
- assertEquals(0, spyList.size());
+ assertEquals(0, spyList.size());
- doReturn(100).when(spyList).size();
- assertThat(spyList).hasSize(100);
- }
+ doReturn(100).when(spyList).size();
+
+ assertThat(spyList).hasSize(100);
+ }
- @Test
- void whenCreateMock_thenCreated() {
- final List mockedList = mock(ArrayList.class);
+ @Test
+ void whenCreateMock_thenCreated() {
+ final List mockedList = mock(ArrayList.class);
- mockedList.add("one");
- verify(mockedList).add("one");
+ mockedList.add("one");
+ verify(mockedList).add("one");
- assertThat(mockedList).hasSize(0);
- }
+ assertThat(mockedList).hasSize(0);
+ }
- @Test
- void whenCreateSpy_thenCreate() {
- final List spyList = spy(new ArrayList<>());
+ @Test
+ void whenCreateSpy_thenCreate() {
+ final List spyList = spy(new ArrayList<>());
- spyList.add("one");
- verify(spyList).add("one");
+ spyList.add("one");
+ verify(spyList).add("one");
- assertThat(spyList).hasSize(1);
- }
+ assertThat(spyList).hasSize(1);
+ }
}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/verify/MockitoVerifyExamplesUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/verify/MockitoVerifyExamplesUnitTest.java
new file mode 100644
index 0000000000..383231b458
--- /dev/null
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/verify/MockitoVerifyExamplesUnitTest.java
@@ -0,0 +1,126 @@
+package com.baeldung.mockito.verify;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.atMost;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
+import org.mockito.exceptions.verification.NoInteractionsWanted;
+
+import com.baeldung.mockito.MyList;
+import com.google.common.collect.Lists;
+
+class MockitoVerifyExamplesUnitTest {
+
+ @Test
+ final void givenInteractionWithMock_whenVerifyingInteraction_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.size();
+ verify(mockedList).size();
+ }
+
+ @Test
+ final void givenOneInteractionWithMock_whenVerifyingNumberOfInteractions_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.size();
+ verify(mockedList, times(1)).size();
+ }
+
+ @Test
+ final void givenNoInteractionWithWholeMock_whenVerifyingInteractions_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ verifyNoInteractions(mockedList);
+ }
+
+ @Test
+ final void givenNoInteractionWithSpecificMethod_whenVerifyingInteractions_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ verify(mockedList, times(0)).size();
+ }
+
+ @Test
+ final void givenUnverifiedInteraction_whenVerifyingNoUnexpectedInteractions_thenFail() {
+ final List mockedList = mock(MyList.class);
+ mockedList.size();
+ mockedList.clear();
+
+ verify(mockedList).size();
+
+ assertThrows(NoInteractionsWanted.class, () -> verifyNoMoreInteractions(mockedList));
+ }
+
+ @Test
+ final void givenInteractionsInOrder_whenVerifyingOrderOfInteractions_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.size();
+ mockedList.add("a parameter");
+ mockedList.clear();
+
+ final InOrder inOrder = inOrder(mockedList);
+ inOrder.verify(mockedList).size();
+ inOrder.verify(mockedList).add("a parameter");
+ inOrder.verify(mockedList).clear();
+ }
+
+ @Test
+ final void givenNoInteraction_whenVerifyingAnInteraction_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.size();
+
+ verify(mockedList, never()).clear();
+ }
+
+ @Test
+ final void givenInteractionAtLeastOnce_whenVerifyingAnInteraction_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.clear();
+ mockedList.clear();
+ mockedList.clear();
+
+ verify(mockedList, atLeast(1)).clear();
+ verify(mockedList, atMost(10)).clear();
+ }
+
+ // with arguments
+
+ @Test
+ final void givenInteractionWithExactArgument_whenVerifyingAnInteraction_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.add("test");
+
+ verify(mockedList).add("test");
+ }
+
+ @Test
+ final void givenInteractionWithAnyArgument_whenVerifyingAnInteraction_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.add("test");
+
+ verify(mockedList).add(anyString());
+ }
+
+ @Test
+ final void givenInteraction_whenVerifyingAnInteractionWithArgumentCapture_thenCorrect() {
+ final List mockedList = mock(MyList.class);
+ mockedList.addAll(Lists. newArrayList("someElement"));
+
+ final ArgumentCaptor> argumentCaptor = ArgumentCaptor.forClass(List.class);
+ verify(mockedList).addAll(argumentCaptor.capture());
+
+ final List capturedArgument = argumentCaptor.getValue();
+ assertThat(capturedArgument).contains("someElement");
+ }
+}
diff --git a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java
index 9b8a713a15..ef4f91139d 100644
--- a/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java
+++ b/testing-modules/mockito-simple/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java
@@ -1,6 +1,5 @@
package com.baeldung.mockito.voidmethods;
-
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
@@ -15,64 +14,75 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
-import org.mockito.junit.jupiter.MockitoExtension;
import com.baeldung.mockito.MyList;
-@ExtendWith(MockitoExtension.class)
class MockitoVoidMethodsUnitTest {
- @Test
- void whenAddCalledVerified() {
- MyList myList = mock(MyList.class);
- myList.add(0, "");
+ @Test
+ void whenAddCalled_thenVerified() {
+ MyList myList = mock(MyList.class);
+ doNothing().when(myList).add(isA(Integer.class), isA(String.class));
+ myList.add(0, "");
+
+ verify(myList, times(1)).add(0, "");
+ }
+
+ @Test
+ void whenAddCalled_thenVerified2() {
+ MyList myList = mock(MyList.class);
+ myList.add(0, "");
- verify(myList, times(1)).add(0, "");
- }
+ verify(myList, times(1)).add(0, "");
+ }
- @Test
- void givenNull_addThrows() {
- MyList myList = mock(MyList.class);
- assertThrows(Exception.class, () -> {
- doThrow().when(myList).add(isA(Integer.class), isNull());
- });
+ @Test
+ void givenNull_whenAddCalled_thenThrowsException() {
+ MyList myList = mock(MyList.class);
+
+ assertThrows(Exception.class, () -> {
+ doThrow().when(myList).add(isA(Integer.class), isNull());
+ });
- myList.add(0, null);
- }
+ myList.add(0, null);
+ }
- @Test
- void whenAddCalledValueCaptured() {
- MyList myList = mock(MyList.class);
- ArgumentCaptor valueCapture = ArgumentCaptor.forClass(String.class);
- doNothing().when(myList).add(any(Integer.class), valueCapture.capture());
- myList.add(0, "captured");
+ @Test
+ void givenArgumentCaptor_whenAddCalled_thenValueCaptured() {
+ MyList myList = mock(MyList.class);
+
+ ArgumentCaptor valueCapture = ArgumentCaptor.forClass(String.class);
+ doNothing().when(myList).add(any(Integer.class), valueCapture.capture());
+
+ myList.add(0, "captured");
- assertEquals("captured", valueCapture.getValue());
- }
+ assertEquals("captured", valueCapture.getValue());
+ }
- @Test
- void whenAddCalledAnswered() {
- MyList myList = mock(MyList.class);
- doAnswer(invocation -> {
- Object arg0 = invocation.getArgument(0);
- Object arg1 = invocation.getArgument(1);
+ @Test
+ void givenDoAnswer_whenAddCalled_thenAnswered() {
+ MyList myList = mock(MyList.class);
- //do something with the arguments here
- assertEquals(3, arg0);
- assertEquals("answer me", arg1);
- return null;
- }).when(myList).add(any(Integer.class), any(String.class));
- myList.add(3, "answer me");
- }
+ doAnswer(invocation -> {
+ Object arg0 = invocation.getArgument(0);
+ Object arg1 = invocation.getArgument(1);
- @Test
- void whenAddCalledRealMethodCalled() {
- MyList myList = mock(MyList.class);
- doCallRealMethod().when(myList).add(any(Integer.class), any(String.class));
- myList.add(1, "real");
-
- verify(myList, times(1)).add(1, "real");
- }
+ assertEquals(3, arg0);
+ assertEquals("answer me", arg1);
+ return null;
+ }).when(myList).add(any(Integer.class), any(String.class));
+
+ myList.add(3, "answer me");
+ }
+
+ @Test
+ void givenDoCallRealMethod_whenAddCalled_thenRealMethodCalled() {
+ MyList myList = mock(MyList.class);
+
+ doCallRealMethod().when(myList).add(any(Integer.class), any(String.class));
+ myList.add(1, "real");
+
+ verify(myList, times(1)).add(1, "real");
+ }
}