最近栈长注意到阿里开源了自家的 Mock 工具:TestableMock , 该工具号称最轻量、简单、舒适的 Mock 测试工具 , 功能十分强大 , 媲美 PowerMock , 用法比 Mockito 还要简洁 , 还不挑框架 , 指哪换哪 , 一个 @MockMethod 注解打天下 。。。
这么强大的么?栈长赶紧来体验一翻!
TestableMock 简介TestableMock 开源地址:
https://github.com/alibaba/testable-mock
文章插图
TestableMock 在 2020 年 12 月开始开源 , 出自阿里云云效团队 , 主要想解决 JAVA 开发者在日常单元测试中经常遇到的痛点:
- 外部依赖Mock繁琐
- 私有方法难测试
- 无返回值方法难测试
- 复杂参数难构造
无需初始化 , 不挑测试框架 , 甭管要换的是私有方法、静态方法、构造方法还是其他任何类的任何方法 , 也甭管要换的对象是怎么创建的 。
写好 Mock 定义 , 加个 @MockMethod 注解 , 一切统统搞定 。
主流Mock工具对比在 TestableMock 开源之前 , 目前市面上主流的 Mock 工具主要有:
- Mockito
- Spock
- PowerMock
- JMockit
- EasyMock
- ….
【阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具】上面所列的主流的 Mock 工具也只有 PowerMock 在功能上能够与 TestableMock 持平 , 但 PowerMock 使用较为复杂 , 而且由于使用的是自定义类加载器技术 , 所以也还会存在一定的问题 。
下面来看下具体对比:
工具原理最小Mock单元被Mock方法限制难度IDE支持Mockito动态代理类不能Mock私有/静态和构造方法较容易很好Spock动态代理类不能Mock私有/静态和构造方法较复杂一般PowerMock自定义类加载器类任何方法皆可较复杂较好JMockit运行时字节码修改类不能Mock构造方法较复杂一般TestableMock运行时字节码修改方法任何方法皆可很容易一般
TestableMock 和 JMockit 底层一致 , 使用的是 “运行时字节码修改“ 技术 , 在单元测试启动时就扫描测试类和被测类的字节码 , 完成 Mock 方法的替换 。
现在综合看来 , 阿里开源的 TestableMock 是最牛逼的了 , 这是要干掉市面上所有 Mock 工具!另外 , 关注Java技术栈 , 在后台回复:工具 , 可以获取我整理的 Java 开发工具系列干货 , 非常齐全 。
上手 TestableMock在项目中的 pom.xml 文件中增加 testable 相关依赖及单元测试相关依赖和插件 , 完整的配置如下:
<properties><testable.version>0.4.9</testable.version><junit.version>5.6.2</junit.version></properties><dependencies><dependency><groupId>com.alibaba.testable</groupId><artifactId>testable-all</artifactId><version>${testable.version}</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>${junit.version}</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.Apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><argLine>-javaagent:${settings.localRepository}/com/alibaba/testable/testable-agent/${testable.version}/testable-agent-${testable.version}.jar</argLine></configuration></plugin></plugins></build>
这里栈长以 Maven 为示例集成使用 TestableMock , Gradle 版本请参考官方文档 。另外 , 关注Java技术栈 , 在后台回复:Maven , 可以获取我整理的 Maven 系列教程 , 非常齐全 。
推荐阅读
- 如何查看Linux命令工具的源码?
- 京东开源PyTorch人脸识别工具包FaceX-Zoo:覆盖最强模型,支持训练跑分
- 傻瓜式教程:如何使用多合一开发工具STM32CubeIDE
- 用Python写一个身份证号码校验工具
- 用python写一个下载文件的小工具
- photoshop用什么工具绘制路径-ps路径及相关工具-
- 三种 Linux 下的 SSH 图形界面工具
- 别了,阿里巴巴fastjson!企业项目迁移Gson全攻略
- 阿里大牛纯CSS实现了常见的UI效果,不信你看
- 良心推荐8个安全测试工具,快来取走