BAEL-88 Testing in Spring Boot (#1722)

This commit is contained in:
Yasin 2017-04-25 10:35:40 +05:30 committed by maibin
parent a7b7ccad2d
commit cee7e71400
5 changed files with 41 additions and 58 deletions

View File

@ -1,7 +1,6 @@
package org.baeldung.boot.boottest; package org.baeldung.boot.boottest;
import java.util.List; import java.util.List;
import java.util.Optional;
import javax.transaction.Transactional; import javax.transaction.Transactional;
@ -12,9 +11,9 @@ import org.springframework.stereotype.Repository;
@Transactional @Transactional
public interface EmployeeRepository extends JpaRepository<Employee, Long> { public interface EmployeeRepository extends JpaRepository<Employee, Long> {
public Optional<Employee> findByName(String name); public Employee findByName(String name);
public Optional<Employee> findById(Long id); public Employee findById(Long id);
public List<Employee> findAll(); public List<Employee> findAll();

View File

@ -1,13 +1,12 @@
package org.baeldung.boot.boottest; package org.baeldung.boot.boottest;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface EmployeeService { public interface EmployeeService {
public Optional<Employee> getEmployeeById(Long id); public Employee getEmployeeById(Long id);
public Optional<Employee> getEmployeeByName(String name); public Employee getEmployeeByName(String name);
public List<Employee> getAllEmployees(); public List<Employee> getAllEmployees();

View File

@ -1,7 +1,6 @@
package org.baeldung.boot.boottest; package org.baeldung.boot.boottest;
import java.util.List; import java.util.List;
import java.util.Optional;
import javax.transaction.Transactional; import javax.transaction.Transactional;
@ -16,12 +15,12 @@ public class EmployeeServiceImpl implements EmployeeService {
private EmployeeRepository employeeRepository; private EmployeeRepository employeeRepository;
@Override @Override
public Optional<Employee> getEmployeeById(Long id) { public Employee getEmployeeById(Long id) {
return employeeRepository.findById(id); return employeeRepository.findById(id);
} }
@Override @Override
public Optional<Employee> getEmployeeByName(String name) { public Employee getEmployeeByName(String name) {
return employeeRepository.findByName(name); return employeeRepository.findByName(name);
} }

View File

@ -3,11 +3,7 @@ package org.baeldung.boot.boottest;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import java.util.List; 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.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -27,18 +23,17 @@ public class EmployeeRepositoryIntegrationTest {
@Test @Test
public void whenFindByName_thenReturnEmployee() { public void whenFindByName_thenReturnEmployee() {
Employee emp = new Employee("test"); Employee alex = new Employee("alex");
entityManager.persistAndFlush(emp); entityManager.persistAndFlush(alex);
Optional<Employee> fromDb = employeeRepository.findByName(emp.getName()); Employee found = employeeRepository.findByName(alex.getName());
assertThat(fromDb.get() assertThat(found.getName()).isEqualTo(alex.getName());
.getName()).isEqualTo(emp.getName());
} }
@Test(expected = NoSuchElementException.class) @Test
public void whenInvalidName_thenNoSuchElementException() { public void whenInvalidName_thenReturnNull() {
Optional<Employee> fromDb = employeeRepository.findByName("doesNotExist"); Employee fromDb = employeeRepository.findByName("doesNotExist");
fromDb.get(); assertThat(fromDb).isNull();
} }
@Test @Test
@ -46,15 +41,14 @@ public class EmployeeRepositoryIntegrationTest {
Employee emp = new Employee("test"); Employee emp = new Employee("test");
entityManager.persistAndFlush(emp); entityManager.persistAndFlush(emp);
Optional<Employee> fromDb = employeeRepository.findById(emp.getId()); Employee fromDb = employeeRepository.findById(emp.getId());
assertThat(fromDb.get() assertThat(fromDb.getName()).isEqualTo(emp.getName());
.getName()).isEqualTo(emp.getName());
} }
@Test(expected = NoSuchElementException.class) @Test
public void whenInvalidId_thenNoSuchElementException() { public void whenInvalidId_thenReturnNull() {
Optional<Employee> fromDb = employeeRepository.findById(-11L); Employee fromDb = employeeRepository.findById(-11L);
fromDb.get(); assertThat(fromDb).isNull();
} }
@Test @Test
@ -74,5 +68,4 @@ public class EmployeeRepositoryIntegrationTest {
.extracting(Employee::getName) .extracting(Employee::getName)
.containsOnly(alex.getName(), ron.getName(), bob.getName()); .containsOnly(alex.getName(), ron.getName(), bob.getName());
} }
} }

View File

@ -4,13 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; 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.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@ -44,38 +38,38 @@ public class EmployeeServiceImplIntegrationTest {
Employee john = new Employee("john"); Employee john = new Employee("john");
john.setId(11L); john.setId(11L);
Optional<Employee> emp = Optional.of(john);
Employee bob = new Employee("bob"); Employee bob = new Employee("bob");
Employee alex = new Employee("alex"); Employee alex = new Employee("alex");
List<Employee> allEmployees = Arrays.asList(john, bob, alex); List<Employee> allEmployees = Arrays.asList(john, bob, alex);
Mockito.when(employeeRepository.findByName(john.getName())) Mockito.when(employeeRepository.findByName(john.getName()))
.thenReturn(emp); .thenReturn(john);
Mockito.when(employeeRepository.findByName(alex.getName()))
.thenReturn(alex);
Mockito.when(employeeRepository.findByName("wrong_name")) Mockito.when(employeeRepository.findByName("wrong_name"))
.thenReturn(Optional.empty()); .thenReturn(null);
Mockito.when(employeeRepository.findById(john.getId())) Mockito.when(employeeRepository.findById(john.getId()))
.thenReturn(emp); .thenReturn(john);
Mockito.when(employeeRepository.findAll()) Mockito.when(employeeRepository.findAll())
.thenReturn(allEmployees); .thenReturn(allEmployees);
Mockito.when(employeeRepository.findById(-99L)) Mockito.when(employeeRepository.findById(-99L))
.thenReturn(Optional.empty()); .thenReturn(null);
} }
@Test @Test
public void whenValidName_thenEmployeeShouldBeFound() { public void whenValidName_thenEmployeeShouldBeFound() {
Optional<Employee> fromDb = employeeService.getEmployeeByName("john"); String name = "alex";
assertThat(fromDb.get() Employee found = employeeService.getEmployeeByName(name);
.getName()).isEqualTo("john");
verifyFindByNameIsCalledOnce("john"); assertThat(found.getName())
.isEqualTo(name);
} }
@Test(expected = NoSuchElementException.class) @Test
public void whenInValidName_thenEmployeeShouldNotBeFound() { public void whenInValidName_thenEmployeeShouldNotBeFound() {
Optional<Employee> fromDb = employeeService.getEmployeeByName("wrong_name"); Employee fromDb = employeeService.getEmployeeByName("wrong_name");
fromDb.get(); assertThat(fromDb).isNull();
verifyFindByNameIsCalledOnce("wrong_name"); verifyFindByNameIsCalledOnce("wrong_name");
} }
@ -97,19 +91,18 @@ public class EmployeeServiceImplIntegrationTest {
} }
@Test @Test
public void whenValidI_thendEmployeeShouldBeFound() { public void whenValidId_thenEmployeeShouldBeFound() {
Optional<Employee> fromDb = employeeService.getEmployeeById(11L); Employee fromDb = employeeService.getEmployeeById(11L);
assertThat(fromDb.get() assertThat(fromDb.getName()).isEqualTo("john");
.getName()).isEqualTo("john");
verifyFindByIdIsCalledOnce(); verifyFindByIdIsCalledOnce();
} }
@Test(expected = NoSuchElementException.class) @Test
public void whenInValidId_thenEmployeeShouldNotBeFound() { public void whenInValidId_thenEmployeeShouldNotBeFound() {
Optional<Employee> fromDb = employeeService.getEmployeeById(-99L); Employee fromDb = employeeService.getEmployeeById(-99L);
verifyFindByIdIsCalledOnce(); verifyFindByIdIsCalledOnce();
fromDb.get(); assertThat(fromDb).isNull();
} }
@Test @Test