PowerMock入门
PowerMock的maven依赖
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.0-beta.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.23.4</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.0-beta.5</version>
<scope>test</scope>
</dependency>
PowerMock有两个重要的注解:
//指定执行方法
@RunWith(PowerMockRunner.class)
//指定需要被mock的静态类
@PrepareForTest( { YourClassWithEgStaticMethod.class })
如果你的测试用例里没有使用注解@PrepareForTest,那么可以不用加注解@RunWith(PowerMockRunner.class),反之亦然。
当需要使用PowerMock强大功能(Mock静态、final、私有方法等)的时候,就需要加注解@PrepareForTest。
mock方法
//mock静态类
PowerMockito.mockStatic(LoginUtil.class);
//mock带返回值的方法
PowerMockito.when(LoginUtil.getUser()).thenReturn(new LoginUser());
//mock没有返回值(void)的方法
doNothing().when(bookService).deleteBookById(Mockito.any(),Mockito.any());
//mock调用方法抛出异常
doThrow(new RuntimeException()).when(bookService).addBook(Mockito.any(),Mockito.any());
PowerMock基本用法
1.普通Mock: Mock参数传递的对象
测试目标代码:
public class FlySunDemo {
public boolean callArgumentInstance(File file) {
return