import lombok.Data;
/**
* @author chenjianfei
*/
@Data
public class Employee {
private String name;
private Integer age;
}
import vip.fkandy.powermock.common.Employee;
/**
* @author chenjianfei
*/
public class EmployeeDao {
public int getCount(Employee employee){
throw new UnsupportedOperationException();
}
public int updateEmployee(Employee employee){
throw new UnsupportedOperationException();
}
public int addEmployee(Employee employee){
throw new UnsupportedOperationException();
}
}
import vip.fkandy.powermock.common.Employee;
/**
* @author chenjianfei
*/
public class EmployeeService {
public void saveOrUpdate(Employee employee){
EmployeeDao employeeDao = new EmployeeDao();
if (employeeDao.getCount(employee) > 0){
employeeDao.updateEmployee(employee);
}else{
employeeDao.addEmployee(employee);
}
}
}
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import vip.fkandy.powermock.common.Employee;
import static org.junit.Assert.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(EmployeeService.class)
public class EmployeeServiceTest {
@Test
public void saveOrUpdate() {
try{
Employee employee = PowerMockito.mock(Employee.class);
EmployeeDao employeeDao = PowerMockito.mock(EmployeeDao.class);
PowerMockito.whenNew(EmployeeDao.class).withAnyArguments().thenReturn(employeeDao);
PowerMockito.when(employeeDao.getCount(employee)).thenReturn(0);
EmployeeService employeeService = new EmployeeService();
employeeService.saveOrUpdate(employee);
Mockito.verify(employeeDao).addEmployee(employee);
Mockito.verify(employeeDao,Mockito.never()).updateEmployee(employee);
}catch (Exception e){
fail();
}
}
@Test
public void saveOrUpdate2() {
try{
Employee employee = PowerMockito.mock(Employee.class);
EmployeeDao employeeDao = PowerMockito.mock(EmployeeDao.class);
PowerMockito.whenNew(EmployeeDao.class).withAnyArguments().thenReturn(employeeDao);
PowerMockito.when(employeeDao.getCount(employee)).thenReturn(1);
EmployeeService employeeService = new EmployeeService();
employeeService.saveOrUpdate(employee);
Mockito.verify(employeeDao,Mockito.never()).addEmployee(employee);
Mockito.verify(employeeDao).updateEmployee(employee);
}catch (Exception e){
fail();
}
}
}
更多,请参看 https://github.com/powermock/powermock/wiki/ReplayAllAndVerifyAll