使用 Mockito 修改私有属性
来源:互联网 发布:社交网络的好处知乎 编辑:程序博客网 时间:2024/05/29 17:30
修改私有属性来 Mock 可能不是一种很好的测试方式, 因为属性名是动态的,但有时不得已而为了,例如下面的代码:
public class UserService {
private ExternalApi external = ExternalApi.default();
private UserDao userDao;public UserService(UserDao userDao) {
this.userDao = userDao;
}public User findUserById(int id) {
return userDao.findById(external.convertId(id));
}
测试时欲隔离对 ExternalApi 的外部依赖, 当然可以把它也作为构造函数的一个参数,这样创建 UserService 实例时就可以 Mock external 属性。不过 external 经常是不变的,所以作为方法参数的必要性也不大。这就希望能在构造出 UserService 之后对 external 私有属性进行 Mock 处理。
在 Mockito 1.x 和 2.x 下要使用不同的方式,分别使用到 Whitebox 和 FieldSetter 类,它们都来自于 mockito.internal.util.reflection
包,可见 Mockito 打心底不推荐直接使用它们,但谁叫它们是 public 的呢。还有一种方式是使用 PowerMock + Mockito, 这是后话。 阅读全文 >>
- 使用 Mockito 修改私有属性
- 修改对象私有属性
- 使用powerMock和mockito模拟静态方法和私有方法
- Mockito使用
- Mockito使用
- Mockito使用
- Mockito使用
- Mockito 使用
- 多使用公共属性,而不是私有属性
- 使用私有构造函数强化singleton属性
- 使用反射调用私有属性和方法
- 【css】浏览器私有属性前缀使用详解
- 使用ES5实现私有非单例属性
- 私有属性
- mockito修改方法入参
- 通过反射访问私有属性并对其进行修改
- C++中修改类的私有属性的方法
- C++中修改由const修饰的私有属性
- 霍夫曼编码 zoj 2339 Hyperhuffman
- 解决mariadb数据库服务无法开启
- BeautifulSoup安装以及一些错误
- jvm运行机制
- Andriod Service与Thread的区别
- 使用 Mockito 修改私有属性
- QMUI / QMUI_iOS框架学习(五)
- 菜鸟之路
- 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)
- SEO学习笔记
- Android Service 前台
- ListView的简单使用
- java开发面试题
- 让CoreData更简单些