换种思路写Mock,让单元测试更简单TestableMock

简介: 一款特立独行的轻量Mock工具。

单元测试中的Mock方法,通常是为了绕开那些依赖外部资源或无关功能的方法调用,使得测试重点能够集中在需要验证和保障的代码逻辑上。

在定义Mock方法时,开发者真正关心的只有一件事:"这个调用,在测试的时候要换成那个假的Mock方法"。

当下主流的Mock框架在实现Mock功能时,需要开发者操心的事情实在太多:Mock框架如何初始化、与所用的服务框架是否兼容、要被Mock的方法是不是私有的、是不是静态的、被Mock对象是new出来的还是注入的、怎样把被测对象送回被测类里...这些非关键的额外工作极大分散了使用Mock工具应有的乐趣。

于是,我们开发了TestableMock一款特立独行的轻量Mock工具


无需初始化,不挑服务框架,甭管要换的是私有方法、静态方法、构造方法还是其他任何类的任何方法,也甭管要换的对象是怎么创建的。写好Mock定义,加个@MockMethod注解,一切统统搞定。

阅读这里了解更多故事。

0.6版本已发布,从0.5.x升级到0.6.x版本请参考版本升级指南


项目维护说明

由于当前并行项目较多,此项目暂时转入维护阶段,在此期间TestableMock会继续提供不定期的版本更新。

如果有遇到其他任何使用问题和建议,请直接在Issues中提出,也可通过Pull Request提交您的代码,我们将尽快回复并处理。

目录结构

|-- testable-parent       ➜ 提供各子模块的公共父pom文件
|-- testable-all          ➜ 依赖聚合,便于一次性引用所有子模块功能
|-- testable-processor    ➜ 编译期代码预处理模块,提供测试辅助功能
|-- testable-agent        ➜ JavaAgent模块,提供Mock测试相关功能
|-- testable-core         ➜ 基础功能模块,提供Mock相关注解和工具类
|-- testable-maven-plugin ➜ Maven插件模块,用于简化JavaAgent注入
|-- tool                  ➜ 项目开发过程中的工具脚本
|-- demo
|   |-- java-demo         ➜ Java语言的示例代码
|   `-- kotlin-demo       ➜ Kotlin语言的示例代码
`-- docs                  ➜ 项目使用文档

构建项目

主项目使用JDK 1.6+和Maven 3+版本构建,其中demo子项目需要JDK 1.8+版本。

mvn clean install

本地生成文档

docsify serve docs

TestableMock文档使用docsify工具生成,构建前请安装nodejs运行时,并使用npm install -g docsify命令安装文档生成工具。

相关文章
|
7月前
|
前端开发
什么是 Mock 测试?掌握 Mock 测试的核心原理
Mock 的意思就是,当你很难拿到源数据时,你可以使用某些手段,去获取到跟源数据相似的假数据,拿着这些假数据,前端可以先行开发,而不需要等待后端给了数据后再开发。
|
缓存 JavaScript 前端开发
MSW:可用于浏览器和测试的Mock服务
在 VUE 项目开发中,大部分需求会涉及API数据交互,为了保证项目效率,前端通常需要一个 API 服务器来确保前端开发进度,这就是所谓的 Mock 服务。网络上有许多类型的 Mock 工具,使用不同的方法解决同一个问题。
842 0
MSW:可用于浏览器和测试的Mock服务
|
7天前
|
敏捷开发 JavaScript 测试技术
深入理解与应用软件测试中的Mock技术
【5月更文挑战第5天】 在现代软件开发过程中,单元测试作为保障代码质量的重要环节,其独立性和可靠性至关重要。Mock技术应运而生,为开发者提供了一种在隔离环境下模拟外部依赖的方法。本文将深入探讨Mock技术的概念、实现方式及其在软件测试中的应用,旨在帮助读者更好地理解和运用这一强大的测试工具,以提升测试效率和软件质量。
|
2月前
|
敏捷开发 供应链 测试技术
深入理解与应用软件测试中的Mock技术
【2月更文挑战第30天】 在现代软件开发过程中,单元测试是保证代码质量的重要手段。然而,对于高度依赖外部系统或服务的应用来说,传统的单元测试方法往往难以实施。Mock技术应运而生,它通过模拟外部依赖的响应,使开发者可以在隔离的环境中测试目标代码。本文将探讨Mock技术的概念、应用场景以及如何在软件测试中有效地使用Mock对象,以增强测试的灵活性和可靠性。
|
9月前
|
存储 测试技术 API
使用Mock思想进行单元测试Python篇
从功能开发完成的定义来看,至少包括:代码本身、文档及单元测试。而往往在实际开发中,由于需求的不停的变化,导致文档及单元测试是开发过程中直接被忽略的内容。反观优秀的开源项目,在全球几千人合作开发的大项目中,仍然能保持代码的高质量,这其中文档和单元测试是必不可少的环节之一。 不同于完整性测试或者冒烟测试,单元测试是为了证明你代码逻辑的正确性,所以必须由开发人员亲自完成,类似在证明“你爸是你爸”。单元测试能够屏蔽80%以上的低级错误,以及在协作开发过程中出现修改公共逻辑造成的潜在风险。一个伴随着单元测试出现的指标叫做覆盖率,即单元测试覆盖的代码行数,简单来说单元测试有没有覆盖代码执行过程中的每一行
144 0
|
5月前
|
测试技术 Python
python 单元测试 mock patch
python 单元测试 mock patch
36 0
|
9月前
|
Java 测试技术
|
Java 测试技术
Java单元测试——Mock技术配置
Java单元测试——Mock技术配置
310 0
Java单元测试——Mock技术配置
|
算法 测试技术 程序员
python3的单元测试模块mock与性能测试模块cProfile
我们知道写完了代码需要自己跑一跑进行测试,一个写好的程序如果连测试都没有就上到生产环境是不敢想象的,这么做的人不是太自信就是太无知。
python3的单元测试模块mock与性能测试模块cProfile
|
JSON 数据格式
阿萨聊测试:Apifox的高级Mock 自定义脚本
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情 大家好,我是阿萨。今天我们学习高级Mock的自定义脚本功能。学习完前面的内容后, 我们还有一类场景使用前面的Mock 方法无法实现.
1093 0
阿萨聊测试:Apifox的高级Mock 自定义脚本