BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing (#5681)

* BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing

* BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing

* BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing

* Update ReflectionTestUtilsUnitTest.java
This commit is contained in:
codehunter34 2018-11-17 14:52:12 -05:00 committed by maibin
parent 5f91423fcb
commit 0cd4d76c15
4 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,23 @@
package org.baeldung.reflectiontestutils.repository;
public class Employee {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String employeeToString() {
return "id: " + getId() + "; name: " + getName();
}
}

View File

@ -0,0 +1,14 @@
package org.baeldung.reflectiontestutils.repository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class EmployeeService {
@Autowired
private HRService hrService;
public String findEmployeeStatus(Integer employeeId) {
return "Employee " + employeeId + " status: " + hrService.getEmployeeStatus(employeeId);
}
}

View File

@ -0,0 +1,11 @@
package org.baeldung.reflectiontestutils.repository;
import org.springframework.stereotype.Component;
@Component
public class HRService {
public String getEmployeeStatus(Integer employeeId) {
return "Inactive";
}
}

View File

@ -0,0 +1,46 @@
package org.baeldung.reflectiontestutils;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import org.baeldung.reflectiontestutils.repository.Employee;
import org.baeldung.reflectiontestutils.repository.EmployeeService;
import org.baeldung.reflectiontestutils.repository.HRService;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
import static org.mockito.Mockito.when;
public class ReflectionTestUtilsUnitTest {
@Test
public void whenNonPublicField_thenReflectionTestUtilsSetField() {
Employee employee = new Employee();
ReflectionTestUtils.setField(employee, "id", 1);
assertTrue(employee.getId().equals(1));
}
@Test
public void whenNonPublicMethod_thenReflectionTestUtilsInvokeMethod() {
Employee employee = new Employee();
ReflectionTestUtils.setField(employee, "id", 1);
employee.setName("Smith, John");
assertTrue(ReflectionTestUtils.invokeMethod(employee, "employeeToString").equals("id: 1; name: Smith, John"));
}
@Test
public void whenInjectingMockOfDependency_thenReflectionTestUtilsSetField() {
Employee employee = new Employee();
ReflectionTestUtils.setField(employee, "id", 1);
employee.setName("Smith, John");
HRService hrService = mock(HRService.class);
when(hrService.getEmployeeStatus(employee.getId())).thenReturn("Active");
EmployeeService employeeService = new EmployeeService();
// Inject mock into the private field
ReflectionTestUtils.setField(employeeService, "hrService", hrService);
assertEquals("Employee " + employee.getId() + " status: Active", employeeService.findEmployeeStatus(employee.getId()));
}
}