用PowerMock mock static方法

在编写代码时,经常需要调用别人已经写好的工具类,而这些工具提供的方法经常是static方法,在这里,直接贴出《PowerMock实战手册》中的例子

待测试方法:

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

引用的工具类

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

测试方法:

@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);
    }
}

重点是

PowerMockito.mockStatic(EmployeeUtils.class);

mock类EmployeeUtils中的所有static方法

posted @ 2016-01-27 09:59  xjzcz  阅读(9110)  评论(0编辑  收藏  举报