PowerMock中的doThrow和thenThrow

发布时间 2023-10-11 13:51:22作者: 浪迹天涯的派大星

在进行单元测试时,经常需要模拟异常场景,在执行某些方法时抛出异常,此时会用到doThrow和thenThrow

1、两者的区别

public class UserService{
    public String getUserName(){
        return "张三";
    }
    
    public void setUserName(String name){
        User user = new User();
        user.setUserName(name);
        userDao.save(user);
    }
}

thenThrow适用于mock的方法存在返回值时使用,示例如下:

PowerMockito.when(userService.getUserName()).thenThrow(new BusinessException());

doThrow适用于mock的方法不存在返回值使用,类似于mock无返回值方式是doNothing()一样,示例如下:

PowerMockito.doThrow(new BusinessException()).when(userService.setUserName());

mock静态方法抛出异常,和上面用法一样,区别在于先mock静态类