用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方法

上一篇:static方法不能直接访问类内的非static变量和不能调用this,super语句分析


下一篇:ASP出500错误怎么办(理论上并不止500错误,其他错误可以同样可以获得更多信息以帮助解决问题)