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