From a71e954cb00b5954be08eaecaeb8e4fa97d1b6ae Mon Sep 17 00:00:00 2001 From: M1mrxEp Date: Mon, 24 Apr 2017 22:25:21 +0530 Subject: [PATCH 1/2] BAEL-88 Testing in Spring Boot --- .../boot/boottest/EmployeeRepository.java | 5 +- .../boot/boottest/EmployeeService.java | 5 +- .../boot/boottest/EmployeeServiceImpl.java | 5 +- .../EmployeeRepositoryIntegrationTest.java | 35 ++++++------- .../EmployeeServiceImplIntegrationTest.java | 49 ++++++++----------- 5 files changed, 41 insertions(+), 58 deletions(-) diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java index fa234f0e3ae4..98d1c3321204 100644 --- a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java @@ -1,7 +1,6 @@ package org.baeldung.boot.boottest; import java.util.List; -import java.util.Optional; import javax.transaction.Transactional; @@ -12,9 +11,9 @@ @Transactional public interface EmployeeRepository extends JpaRepository { - public Optional findByName(String name); + public Employee findByName(String name); - public Optional findById(Long id); + public Employee findById(Long id); public List findAll(); diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java index f0ed49e69955..13b5ca56e08a 100644 --- a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java @@ -1,13 +1,12 @@ package org.baeldung.boot.boottest; import java.util.List; -import java.util.Optional; public interface EmployeeService { - public Optional getEmployeeById(Long id); + public Employee getEmployeeById(Long id); - public Optional getEmployeeByName(String name); + public Employee getEmployeeByName(String name); public List getAllEmployees(); diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java index 6d5bf426ec7c..3fbfa92bc86e 100644 --- a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java @@ -1,7 +1,6 @@ package org.baeldung.boot.boottest; import java.util.List; -import java.util.Optional; import javax.transaction.Transactional; @@ -16,12 +15,12 @@ public class EmployeeServiceImpl implements EmployeeService { private EmployeeRepository employeeRepository; @Override - public Optional getEmployeeById(Long id) { + public Employee getEmployeeById(Long id) { return employeeRepository.findById(id); } @Override - public Optional getEmployeeByName(String name) { + public Employee getEmployeeByName(String name) { return employeeRepository.findByName(name); } diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryIntegrationTest.java index cf94f4be4929..ec599beedf3f 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryIntegrationTest.java @@ -3,11 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.List; -import java.util.NoSuchElementException; -import java.util.Optional; -import org.baeldung.boot.boottest.Employee; -import org.baeldung.boot.boottest.EmployeeRepository; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,18 +23,17 @@ public class EmployeeRepositoryIntegrationTest { @Test public void whenFindByName_thenReturnEmployee() { - Employee emp = new Employee("test"); - entityManager.persistAndFlush(emp); + Employee alex = new Employee("alex"); + entityManager.persistAndFlush(alex); - Optional fromDb = employeeRepository.findByName(emp.getName()); - assertThat(fromDb.get() - .getName()).isEqualTo(emp.getName()); + Employee found = employeeRepository.findByName(alex.getName()); + assertThat(found.getName()).isEqualTo(alex.getName()); } - @Test(expected = NoSuchElementException.class) - public void whenInvalidName_thenNoSuchElementException() { - Optional fromDb = employeeRepository.findByName("doesNotExist"); - fromDb.get(); + @Test + public void whenInvalidName_thenReturnNull() { + Employee fromDb = employeeRepository.findByName("doesNotExist"); + assertThat(fromDb).isNull(); } @Test @@ -46,15 +41,14 @@ public void whenFindById_thenReturnEmployee() { Employee emp = new Employee("test"); entityManager.persistAndFlush(emp); - Optional fromDb = employeeRepository.findById(emp.getId()); - assertThat(fromDb.get() - .getName()).isEqualTo(emp.getName()); + Employee fromDb = employeeRepository.findById(emp.getId()); + assertThat(fromDb.getName()).isEqualTo(emp.getName()); } - @Test(expected = NoSuchElementException.class) - public void whenInvalidId_thenNoSuchElementException() { - Optional fromDb = employeeRepository.findById(-11L); - fromDb.get(); + @Test + public void whenInvalidId_thenReturnNull() { + Employee fromDb = employeeRepository.findById(-11L); + assertThat(fromDb).isNull(); } @Test @@ -74,5 +68,4 @@ public void givenSetOfEmployees_whenFindAll_thenReturnAllEmployees() { .extracting(Employee::getName) .containsOnly(alex.getName(), ron.getName(), bob.getName()); } - } diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplIntegrationTest.java index e8a585a23e22..8038ae437381 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplIntegrationTest.java @@ -4,13 +4,7 @@ import java.util.Arrays; import java.util.List; -import java.util.NoSuchElementException; -import java.util.Optional; -import org.baeldung.boot.boottest.Employee; -import org.baeldung.boot.boottest.EmployeeRepository; -import org.baeldung.boot.boottest.EmployeeService; -import org.baeldung.boot.boottest.EmployeeServiceImpl; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,38 +38,38 @@ public void setUp() { Employee john = new Employee("john"); john.setId(11L); - Optional emp = Optional.of(john); - Employee bob = new Employee("bob"); Employee alex = new Employee("alex"); List allEmployees = Arrays.asList(john, bob, alex); Mockito.when(employeeRepository.findByName(john.getName())) - .thenReturn(emp); + .thenReturn(john); + Mockito.when(employeeRepository.findByName(alex.getName())) + .thenReturn(alex); Mockito.when(employeeRepository.findByName("wrong_name")) - .thenReturn(Optional.empty()); + .thenReturn(null); Mockito.when(employeeRepository.findById(john.getId())) - .thenReturn(emp); + .thenReturn(john); Mockito.when(employeeRepository.findAll()) .thenReturn(allEmployees); Mockito.when(employeeRepository.findById(-99L)) - .thenReturn(Optional.empty()); + .thenReturn(null); } @Test public void whenValidName_thenEmployeeShouldBeFound() { - Optional fromDb = employeeService.getEmployeeByName("john"); - assertThat(fromDb.get() - .getName()).isEqualTo("john"); - - verifyFindByNameIsCalledOnce("john"); - } + String name = "alex"; + Employee found = employeeService.getEmployeeByName(name); + + assertThat(found.getName()) + .isEqualTo(name); + } - @Test(expected = NoSuchElementException.class) + @Test public void whenInValidName_thenEmployeeShouldNotBeFound() { - Optional fromDb = employeeService.getEmployeeByName("wrong_name"); - fromDb.get(); + Employee fromDb = employeeService.getEmployeeByName("wrong_name"); + assertThat(fromDb).isNull(); verifyFindByNameIsCalledOnce("wrong_name"); } @@ -97,19 +91,18 @@ public void whenNonExistingName_thenEmployeeShouldNotExist() { } @Test - public void whenValidI_thendEmployeeShouldBeFound() { - Optional fromDb = employeeService.getEmployeeById(11L); - assertThat(fromDb.get() - .getName()).isEqualTo("john"); + public void whenValidId_thenEmployeeShouldBeFound() { + Employee fromDb = employeeService.getEmployeeById(11L); + assertThat(fromDb.getName()).isEqualTo("john"); verifyFindByIdIsCalledOnce(); } - @Test(expected = NoSuchElementException.class) + @Test public void whenInValidId_thenEmployeeShouldNotBeFound() { - Optional fromDb = employeeService.getEmployeeById(-99L); + Employee fromDb = employeeService.getEmployeeById(-99L); verifyFindByIdIsCalledOnce(); - fromDb.get(); + assertThat(fromDb).isNull(); } @Test From 52f03ada2b14c05e04d0366c9d35f955e6b770a3 Mon Sep 17 00:00:00 2001 From: M1mrxEp Date: Wed, 26 Apr 2017 23:28:32 +0530 Subject: [PATCH 2/2] BAEL-88 Integration tests fixed. --- .../src/main/java/org/baeldung/config/H2JpaConfig.java | 4 ++-- .../test/java/org/baeldung/config/H2TestProfileJPAConfig.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java b/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java index ace7bb5a6d81..62791bf1808f 100644 --- a/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java +++ b/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java @@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration -@EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) +@EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository", "org.baeldung.boot.boottest" }) @PropertySource("classpath:persistence-generic-entity.properties") @EnableTransactionManagement public class H2JpaConfig { @@ -41,7 +41,7 @@ public DataSource dataSource() { public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource()); - em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model" }); + em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model", "org.baeldung.boot.boottest" }); em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); em.setJpaProperties(additionalProperties()); return em; diff --git a/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java b/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java index 1d696f4a5d10..eff383b440a6 100644 --- a/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java +++ b/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java @@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration -@EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) +@EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository", "org.baeldung.boot.boottest" }) @EnableTransactionManagement public class H2TestProfileJPAConfig { @@ -41,7 +41,7 @@ public DataSource dataSource() { public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource()); - em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model" }); + em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model", "org.baeldung.boot.boottest" }); em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); em.setJpaProperties(additionalProperties()); return em;