用PowerMock mock static方法

在編寫代碼時,常常須要調用別人已經寫好的工具類,而這些工具提供的方法常常是static方法,在這裏,直接貼出《PowerMock實戰手冊》中的例子工具

待測試方法:測試

public class EmployeeService {
    public int getEmployeeCountWithStatic() {
        return EmployeeUtils.getEmployeeCount();
    }
}

引用的工具類spa

public class EmployeeUtils {
    public static int getEmployeeCount() {
        throw new UnsupportedOperationException();
    }
}

測試方法:code

@PrepareForTest(EmployeeUtils.class)
public class EmployeeServiceTestWithStaticTest   extends PowerMockTestCase{
    
    private EmployeeService employeeService;
    
    @ObjectFactory
    public ITestObjectFactory getObjectFactory() {
        return new PowerMockObjectFactory();
    }
    
    @BeforeMethod
    public void init(){
         employeeService = new EmployeeService();
    }

    @Test
    public void testGetEmployeeCountWithStatic() {
        PowerMockito.mockStatic(EmployeeUtils.class);
        PowerMockito.when(EmployeeUtils.getEmployeeCount()).thenReturn(10);
        int count = employeeService.getEmployeeCountWithStatic();
        Assert.assertEquals(10, count);
    }
}

重點是blog

PowerMockito.mockStatic(EmployeeUtils.class);get

mock類EmployeeUtils中的全部static方法it

相關文章
相關標籤/搜索