mock final類相對簡單,直接貼代碼
被測方法:
public class FinalEmployeeService { public void insertEmployee(Employee employee) { FinalEmployeeDao employeeDao = new FinalEmployeeDao(); employeeDao.insertEmployee(employee); } }
final 類
final public class FinalEmployeeDao { public boolean insertEmployee(Employee employee) { throw new UnsupportedOperationException(); } }
測試類:
@PrepareForTest(value={FinalEmployeeDao.class,FinalEmployeeService.class}) public class EmployeeServiceTestWithFinalClassTest extends PowerMockTestCase{ @ObjectFactory public ITestObjectFactory getObjectFactory() { return new PowerMockObjectFactory(); } @Test public void test() throws Exception { FinalEmployeeDao employeeDao = PowerMockito .mock(FinalEmployeeDao.class); Employee employee = new Employee(); PowerMockito.whenNew(FinalEmployeeDao.class).withNoArguments().thenReturn(employeeDao); PowerMockito.when(employeeDao.insertEmployee(employee)).thenReturn(true); FinalEmployeeService employeeService = new FinalEmployeeService(); employeeService.insertEmployee(employee); Mockito.verify(employeeDao).insertEmployee(employee); } }