diff --git a/testing-modules/mockito-4/pom.xml b/testing-modules/mockito-4/pom.xml
index e6bc73278b73..519724f3b824 100644
--- a/testing-modules/mockito-4/pom.xml
+++ b/testing-modules/mockito-4/pom.xml
@@ -17,5 +17,17 @@
23
UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 21
+ 21
+
+
+
+
\ No newline at end of file
diff --git a/testing-modules/mockito-4/src/main/java/com/baeldung/mockinglogger/UserService.java b/testing-modules/mockito-4/src/main/java/com/baeldung/mockinglogger/UserService.java
new file mode 100644
index 000000000000..730aaae70ee1
--- /dev/null
+++ b/testing-modules/mockito-4/src/main/java/com/baeldung/mockinglogger/UserService.java
@@ -0,0 +1,26 @@
+package com.baeldung.mockinglogger;
+
+import org.slf4j.Logger;
+
+public class UserService {
+
+ private final Logger logger;
+
+ public UserService(Logger logger) {
+ this.logger = logger;
+ }
+
+ public void checkAdminStatus(boolean isAdmin) {
+ if (isAdmin) {
+ logger.info("You are an admin, access granted");
+ } else {
+ logger.error("You are not an admin");
+ }
+ }
+
+ public void processUser(String username) {
+ logger.info("Processing user: {}", username);
+ logger.warn("Please don't close your browser ...");
+ logger.info("Processing complete");
+ }
+}
diff --git a/testing-modules/mockito-4/src/test/java/com/baeldung/mockinglogger/UserServiceUnitTest.java b/testing-modules/mockito-4/src/test/java/com/baeldung/mockinglogger/UserServiceUnitTest.java
new file mode 100644
index 000000000000..0589a490d3d2
--- /dev/null
+++ b/testing-modules/mockito-4/src/test/java/com/baeldung/mockinglogger/UserServiceUnitTest.java
@@ -0,0 +1,68 @@
+package com.baeldung.mockinglogger;
+
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InOrder;
+import org.mockito.MockedStatic;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+class UserServiceUnitTest {
+
+ private Logger mockLogger;
+ private UserService userService;
+
+ @BeforeEach
+ public void setup() {
+ mockLogger = mock(Logger.class);
+ userService = new UserService(mockLogger);
+ }
+
+ @Test
+ void givenUserServiceLogic_whenVerifyingIfUserIsNotAnAdmin_thenReturnCorrectLog() {
+
+ try (MockedStatic mockedFactory = mockStatic(LoggerFactory.class)) {
+ mockedFactory.when(() -> LoggerFactory.getLogger(UserService.class))
+ .thenReturn(mockLogger);
+ userService.checkAdminStatus(false);
+
+ verify(mockLogger).error("You are not an admin");
+
+ }
+ }
+
+ @Test
+ void givenUserServiceLogic_whenVerifyingIfUserIsAnAdmin_thenReturnCorrectLog() {
+
+ try (MockedStatic mockedFactory = mockStatic(LoggerFactory.class)) {
+ mockedFactory.when(() -> LoggerFactory.getLogger(UserService.class))
+ .thenReturn(mockLogger);
+ userService.checkAdminStatus(true);
+
+ verify(mockLogger).info("You are an admin, access granted");
+ }
+ }
+
+ @Test
+ void givenUserServiceLogic_whenProcessingAUser_thenLogMultipleMessage() {
+ try (MockedStatic mockedFactory = mockStatic(LoggerFactory.class)) {
+ mockedFactory.when(() -> LoggerFactory.getLogger(UserService.class))
+ .thenReturn(mockLogger);
+ userService.processUser("Harry");
+
+ InOrder inOrder = inOrder(mockLogger);
+
+ inOrder.verify(mockLogger)
+ .info("Processing user: {}", "Harry");
+ inOrder.verify(mockLogger)
+ .info("Processing complete");
+ }
+
+ }
+
+}
\ No newline at end of file