BAEL-88 Testing in Spring Boot (#1722)
This commit is contained in:
parent
a7b7ccad2d
commit
cee7e71400
@ -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();
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user