diff --git a/persistence-modules/spring-persistence-simple/pom.xml b/persistence-modules/spring-persistence-simple/pom.xml
index 8a03310048..45605c853e 100644
--- a/persistence-modules/spring-persistence-simple/pom.xml
+++ b/persistence-modules/spring-persistence-simple/pom.xml
@@ -92,6 +92,12 @@
${org.springframework.version}
test
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
com.querydsl
querydsl-jpa
@@ -137,6 +143,7 @@
9.0.0.M26
1.1
4.2.1
+ 3.3.3
21.0
diff --git a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java
new file mode 100644
index 0000000000..9894801a53
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java
@@ -0,0 +1,49 @@
+package com.baeldung.jdbc;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import javax.sql.DataSource;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+import org.springframework.test.util.ReflectionTestUtils;
+
+
+@RunWith(MockitoJUnitRunner.class)
+
+public class EmployeeDAOUnitTest {
+
+ @Mock
+ JdbcTemplate jdbcTemplate;
+
+ @Test
+ public void whenMockJdbcTemplate_thenReturnCorrectEmployeeCount() {
+ EmployeeDAO employeeDAO = new EmployeeDAO();
+ ReflectionTestUtils.setField(employeeDAO, "jdbcTemplate", jdbcTemplate);
+ Mockito.when(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM EMPLOYEE", Integer.class))
+ .thenReturn(4);
+ assertEquals(4, employeeDAO.getCountOfEmployees());
+
+ Mockito.when(jdbcTemplate.queryForObject(Mockito.anyString(), Mockito.eq(Integer.class)))
+ .thenReturn(3);
+ assertEquals(3, employeeDAO.getCountOfEmployees());
+ }
+
+ @Test
+ public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() {
+ DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
+ .addScript("classpath:jdbc/schema.sql")
+ .addScript("classpath:jdbc/test-data.sql")
+ .build();
+ EmployeeDAO employeeDAO = new EmployeeDAO();
+ employeeDAO.setDataSource(dataSource);
+ assertEquals(4, employeeDAO.getCountOfEmployees());
+ }
+
+}