专栏名称: 阿里云开发者
阿里巴巴官方技术号,关于阿里的技术创新均将呈现于此
目录
今天看啥  ›  专栏  ›  阿里云开发者

JDK11下Mock框架进化:从PowerMockito到Mockito Only

阿里云开发者  · 公众号  · 科技公司  · 2024-08-20 08:30
    

主要观点总结

本文讨论了从使用PowerMock迁移到Mockito Only的策略及其实践方法,包括迁移原因、移除PowerMock依赖的方法、Mockito的特性、测试重构工具和Mockito与PowerMock实现原理的区别。

关键观点总结

关键观点1: 迁移原因

由于PowerMock存在内存泄漏问题且不支持JDK新版本特性,需要迁移到Mockito Only测试框架。

关键观点2: 移除PowerMock依赖

去除PowerMock依赖,使用Mockito替代,并对Mockito版本进行升级。

关键观点3: Mockito特性

使用Mockito时需要使用@RunWith(MockitoJUnitRunner.class);另外,Mockito支持Mock静态方法、private和final方法等。

关键观点4: 测试重构工具

介绍使用AI Agent和单元测试重构脚本进行大量测试代码重构的方法。

关键观点5: Mockito与PowerMock实现原理的区别

Mockito主要通过动态代理和字节码生成生成模拟对象,而PowerMock通过字节码操作、类加载器替换等处理静态方法、构造函数和私有方法等。


文章预览

阿里妹导读 本文探讨了从使用PowerMock的测试环境迁移到仅使用Mockito(Mockito Only)策略的必要性和实践方法。 TL;DR: 为了写出更好的代码和延长生命,请尽快脱离PowerMock的泥潭,拥抱Mockito Only的海洋。 为什么要去除PowerMock依赖? 这个契机来自于升级JDK11,在给团队中的一个核心应用升级JDK11时调研发现,PowerMock从文档来看只支持JDK9,不支持更高JDK版本,更重要的是PowerMockito已经长期不维护了。 如果继续在项目里面集成一个已经不维护的开源测试框架,后续极有可能出现JDK新版本新特性无法使用的问题,因此趁着JDK11升级这样一次大刀阔斧改造的机会,去除PowerMock依赖,使用Mockito Only测试框架。 根据Mockito开源仓库的文档介绍,Mockito一直在迭代新的版本,测试框架也在不断适配新的JDK版本。 https://github.com/powermock/powermock https://github.com/mockito/mockito/relea ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览