diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/PaymentProcessor.java b/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/PaymentProcessor.java new file mode 100644 index 0000000000..39b2b74bd0 --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/PaymentProcessor.java @@ -0,0 +1,22 @@ +package com.baeldung.constructor; + +public class PaymentProcessor { + + private final PaymentService paymentService; + + public PaymentProcessor(PaymentService paymentService) { + this.paymentService = paymentService; + } + + public PaymentProcessor() { + this.paymentService = new PaymentService(); + } + + public PaymentProcessor(String paymentMode) { + this.paymentService = new PaymentService(paymentMode); + } + + public String processPayment(){ + return paymentService.processPayment(); + } +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/PaymentService.java b/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/PaymentService.java new file mode 100644 index 0000000000..5194ed7e21 --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/PaymentService.java @@ -0,0 +1,19 @@ +package com.baeldung.constructor; + +public class PaymentService { + + private final String paymentMode; + + public PaymentService(String paymentMode) { + this.paymentMode = paymentMode; + } + + public PaymentService() { + this.paymentMode = "Cash"; + } + + public String processPayment(){ + // simulate processing payment and returns the payment mode + return this.paymentMode; + } +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/User.java b/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/User.java deleted file mode 100644 index ab4070044f..0000000000 --- a/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/User.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.constructor; - -public class User { - - private final UserService userService; - - public User() { - this.userService = new UserService(); - } - - public User(String userName) { - this.userService = new UserService(userName); - } - - public String getUserName(){ - return userService.getUserName(); - } -} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/UserService.java b/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/UserService.java deleted file mode 100644 index bd5fcfdbda..0000000000 --- a/testing-modules/mockito-2/src/main/java/com/baeldung/constructor/UserService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.constructor; - -public class UserService { - - private final String userName; - - public UserService(String userName) { - this.userName = userName; - } - - public UserService() { - this.userName = "Unknown"; - } - - public String getUserName(){ - return this.userName; - } -} diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/constructor/PaymentServiceUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/constructor/PaymentServiceUnitTest.java new file mode 100644 index 0000000000..16be4a728b --- /dev/null +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/constructor/PaymentServiceUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung.constructor; + +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.MockedConstruction; +import org.mockito.Mockito; + +class PaymentServiceUnitTest { + + @Test + void whenConstructorInvokedWithInitializer_ThenMockObjectShouldBeCreated(){ + try(MockedConstruction mockPaymentService = Mockito.mockConstruction(PaymentService.class,(mock,context)-> when(mock.processPayment()).thenReturn("Credit"))){ + PaymentProcessor paymentProcessor = new PaymentProcessor(); + Assertions.assertEquals(1,mockPaymentService.constructed().size()); + Assertions.assertEquals("Credit", paymentProcessor.processPayment()); + } + } + + @Test + void whenConstructorInvokedWithoutInitializer_ThenMockObjectShouldBeCreatedWithNullFields(){ + try(MockedConstruction mockPaymentService = Mockito.mockConstruction(PaymentService.class)){ + PaymentProcessor paymentProcessor = new PaymentProcessor(); + Assertions.assertEquals(1,mockPaymentService.constructed().size()); + Assertions.assertNull(paymentProcessor.processPayment()); + } + } + + @Test + void whenConstructorInvokedWithParameters_ThenMockObjectShouldBeCreated(){ + try(MockedConstruction mockPaymentService = Mockito.mockConstruction(PaymentService.class,(mock, context) -> when(mock.processPayment()).thenReturn("Credit"))){ + PaymentProcessor paymentProcessor = new PaymentProcessor("Debit"); + Assertions.assertEquals(1,mockPaymentService.constructed().size()); + Assertions.assertEquals("Credit", paymentProcessor.processPayment()); + } + } + + @Test + void whenMultipleConstructorsInvoked_ThenMultipleMockObjectsShouldBeCreated(){ + try(MockedConstruction mockPaymentService = Mockito.mockConstruction(PaymentService.class)){ + PaymentProcessor paymentProcessor = new PaymentProcessor(); + PaymentProcessor secondPaymentProcessor = new PaymentProcessor(); + PaymentProcessor thirdPaymentProcessor = new PaymentProcessor("Debit"); + + when(mockPaymentService.constructed().get(0).processPayment()).thenReturn("Credit"); + when(mockPaymentService.constructed().get(1).processPayment()).thenReturn("Online Banking"); + + Assertions.assertEquals(3,mockPaymentService.constructed().size()); + Assertions.assertEquals("Credit", paymentProcessor.processPayment()); + Assertions.assertEquals("Online Banking", secondPaymentProcessor.processPayment()); + Assertions.assertNull(thirdPaymentProcessor.processPayment()); + } + } + + @Test + void whenDependencyInjectionIsUsed_ThenMockObjectShouldBeCreated(){ + PaymentService mockPaymentService = Mockito.mock(PaymentService.class); + PaymentProcessor paymentProcessor = new PaymentProcessor(mockPaymentService); + when(mockPaymentService.processPayment()).thenReturn("Online Banking"); + Assertions.assertEquals("Online Banking", paymentProcessor.processPayment()); + } +} diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/constructor/UserServiceUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/constructor/UserServiceUnitTest.java deleted file mode 100644 index 9683226609..0000000000 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/constructor/UserServiceUnitTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.baeldung.constructor; - -import static org.mockito.Mockito.when; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.MockedConstruction; -import org.mockito.Mockito; - -class UserServiceUnitTest { - - @Test - void whenConstructorInvokedWithInitializer_ThenMockObjectShouldBeCreated(){ - try(MockedConstruction mockUserService = Mockito.mockConstruction(UserService.class,(mock,context)-> when(mock.getUserName()).thenReturn("John Doe"))){ - User user = new User(); - Assertions.assertEquals(1,mockUserService.constructed().size()); - Assertions.assertEquals("John Doe",user.getUserName()); - } - } - - @Test - void whenConstructorInvokedWithoutInitializer_ThenMockObjectShouldBeCreatedWithNullFields(){ - try(MockedConstruction mockUserService = Mockito.mockConstruction(UserService.class)){ - User user = new User(); - Assertions.assertEquals(1,mockUserService.constructed().size()); - Assertions.assertNull(user.getUserName()); - } - } - - @Test - void whenConstructorInvokedWithParameters_ThenMockObjectShouldBeCreated(){ - try(MockedConstruction mockUserService = Mockito.mockConstruction(UserService.class,(mock, context) -> when(mock.getUserName()).thenReturn("John Doe"))){ - User user = new User("Mike"); - Assertions.assertEquals(1,mockUserService.constructed().size()); - Assertions.assertEquals("John Doe",user.getUserName()); - } - } - - @Test - void whenMultipleConstructorsInvoked_ThenMultipleMockObjectsShouldBeCreated(){ - try(MockedConstruction mockUserService = Mockito.mockConstruction(UserService.class)){ - User user = new User(); - User secondUser = new User(); - User thirdUser = new User("Mike"); - - when(mockUserService.constructed().get(0).getUserName()).thenReturn("John Doe"); - when(mockUserService.constructed().get(1).getUserName()).thenReturn("Steve Smith"); - - Assertions.assertEquals(3,mockUserService.constructed().size()); - Assertions.assertEquals("John Doe",user.getUserName()); - Assertions.assertEquals("Steve Smith",secondUser.getUserName()); - Assertions.assertNull(thirdUser.getUserName()); - } - } -}