实战案例|利用 MarsCode 内置的 DeepSeek 服务,单元测试耗时缩短70%!
单元测试总在奇怪的地方卡 bug?Mock 配置像解谜游戏、边界条件比数学题还烧脑?
没关系!
MarsCode 编程助手 X 三款大模型(DeepSeek V3、DeepSeek R1、豆包大模型1.5 )帮你解决所有问题
无需配置,性能Top,代码准确率嗖嗖🚀
用过的朋友都说: “以前写测试像开手动挡,现在像开了自动巡航” ,速看~👇👇👇
准备工作
在正式开始单元测试之前,我们先做好相关准备👇
-
下载/更新MarsCode 编程助手
1️⃣如果你是新用户,以Visual Studio Code中为例,打开VSCode 扩展窗口,在搜索窗口搜索MarsCode,找到MarsCode 插件单击「install」,完成安装,登录即可使用MarsCode 编程助手。
2️⃣ 如果你是老用户,请更新MarsCode 编程助手到最新版本(若开启了自动更新,则将会自动更新),更新后重启IDE即可
*VSCode:1.1.62
*JetBrains:1.2.1.15
-
克隆案例项目
本次案例使用的是AI生成的一个最基础的React项目,目的是模拟学习工作中最真实的场景,方便大家迅速掌握快速搭建单元测试环境以及生成单元测试用例的技巧。
Bash |
-
单元测试基础
*因为后续案例选用的是Jest作为单元测试框架,所以介绍的基础内容主要以Jest框架为标准
• 概念介绍
1️⃣ 断言(Assertion) :用于验证测试结果是否符合预期的语句,如 Expect
2️⃣ 测试替身(Test Double) :用于替代真实依赖的模拟对象,确保测试的隔离性,如 Mock、Jest.fn
3️⃣ 测试覆盖率(Test Coverage) :用于衡量测试用例覆盖代码的比例,如 行覆盖率、分支覆盖率
• 单元测试文件命名规范
生成的单元测试文件名必须以 .test.ts/.test.js 作为结尾,否则单元测试框架无法读取并执行单元测试用例
• 运行单元测试用例
Markdown |
实战跟练
STEP1:搭建测试环境
首先来搭建一下单元测试的环境,向MarsCode输入以下提示词:
Markdown |
可以看到MarsCode给我们推荐的单元测试框架是Jest,这是一个流行的JavaScript测试框架,特别适合用于单元测试。
另外,React组件的单元测试,依赖 React Testing Library ,RTL是当前 React 生态中最流行的组件测试解决方案,它提供了一套更贴近真实用户行为的测试工具链。
STEP2:单元测试用例编写
关于单元测试用例,将从函数类和UI类等不同的方式类型来举例实现
• 函数类
1️⃣ 纯函数 & 工具类 对于纯函数的工具类单元测试,特点是输入输出明确,无副作用,整体测试重点是 输出格式验证和唯一性检查,接下来以 生成唯一 ID 为例:
JavaScript |
我们可以打开src\utils\tool-utils.js,选中代码,在对话框直接选择/test功能形成单元测试:
将生成的单测代码另存为tool-utils.test.js,保存后执行得到如下效果:
结果显示覆盖率100%,但是有一个用例并未通过,显示特殊字符作为前缀输出的结果未匹配正则。
我们可以切换到DeepSeek R1模型并选中文件,将出现的问题告诉MarsCode后将生成的代码替换进原来的tool-utils.test.js,再次运行 npx jest --coverage 可以发现问题已解决~
如果test代码未运行成功出现报错,可以将报错内容复制给MarsCode,利用AI问答继续解决问题。
2️⃣ 数据转换 & 验证
接下来以用户资料表单处理器为例,处理结构化数据或验证规则,这则测试案例重点在于正常数据清洗(trim、类型转换)、异常输入(空值、非法邮箱、年龄不足)、 及错误消息准确性,打开validate-utils.js,选择生成单测:
JavaScript |
同样将MarsCode生成的单测代码保存为validate-utils.test.js后运行,效果如下:
3️⃣ 状态管理 & 业务逻辑 现在我们来探讨更复杂业务逻辑下的单测,以购物车 Redux reducer为例,涉及核心业务规则或全局状态变更,这个案例中我们的测试重点在
• 商品添加逻辑(新增 vs 增量)
• 促销码有效性验证
• 不可变数据检查
JavaScript |
现在打开businuss-utils.js,同样选中/test 生成单测:
将MarsCode 生成的新文件保存为businuss-utils.test.js,运行单测命令,得到如下效果:
• UI类
我们以用户输入花费金额的REACT组件为例,我们单测的重点在于事件是否能正确触发以及UI是否能正常显示,打开react-test.jsx文件:
JavaScript |
向MarsCode 输入单测/test,同样将生成的代码另存为react_tes t.test.js进行运行,运行之后发现单测覆盖率只有62.5%,不太理想。
我们可以继续让MarsCode 生成单测补充用例,提高覆盖率
应 用代码后,可以看到单测覆盖率 提升到83.33%,同时帮我们优化了部分代码,甚至对原来的handleChange函数进行了优化,提升了代码质量。
通过本次实践,我们不仅掌握了单元测试的核心价值与实施方法,更验证了 MarsCode 在提升代码质量方面的工程价值。 相信在更复杂的业务场景下,优秀的工具能帮助开发者释放更多生产力。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
XZ 5.8 发布,后门灾难事件以来的第一个主要功能版本,性能提升 15%
XZ 5.8 已于今天发布,这是自去年 XZ 5.6 中由当时的项目共同维护者插入恶意后门以来的第一个值得关注的功能版本。 XZ5.6.2 于去年 5 月发布,而 XZ 5.8.0 现已稳定,为这个无损数据压缩器项目带来了新功能。 对于为 x86 或 x86_64 架构构建的 liblzma,现在尝试使用 SSE2 内在函数而不是 memcpy () 作为 LZMA/LZMA2 解码器。使用这种 SSE2 内在函数可以将解压时间缩短 5%。或者,如果针对 musl C 库进行构建,这些 SSE2 内在函数可以将高度压缩文件的时间缩短 15% 以上。 除了用于 liblzma 的 XZ 5.8 SSE2 内部函数之外,还有 CMake 构建系统更新、语言翻译更新、针对 64 位 POWER 和 RISC-V 的改进的 LZMA/LZMA2 编码器性能、重写 x86_64 E2K CLMUL CRC 代码以及其他优化。 XZ 5.8 更新现在由 Lasse Collin 管理,可以从官方XZ 项目网站下载。
- 下一篇
eCapture(旁观者) v1.0.0 稳定版发布,基于 eBPF 的高级网络工具
eCapture(旁观者) v1.0.0 稳定版已正式发布。 eCapture的中文名字为旁观者,即「当局者迷,旁观者清」,与其本身功能旁路、观察契合,且发音与英文有相似之处。eCapture使用eBPFUprobe/Traffic Control技术,实现各种用户空间/内核空间的数据捕获,无需改动原程序。主要功能包括:捕获 OpenSSL、GnuTLS 的密钥、明文通讯,支持HTTP/3 QUIC、IPv6、TLS 1.3 等。 凭借其强大的功能和丰富的特性,eCapture 已成为网络调试和安全分析领域的重要工具。自 2022 年 3 月发布至今三年,累计收获 1.4 万颗星。 v1.0.0 版本更新内容如下: 新增功能 支持 Docker 镜像,简化部署和使用。 新增对 OpenSSL 3.4.0 和 GnuTLS 的密钥捕获支持。 支持 IPv6 数据包捕获,扩展网络协议支持。 增加 Zsh 命令审计功能,提升安全监控能力。 关键修复 修复 Ubuntu 24.04 系统上初始化脚本的兼容性问题。 解决 ARM64 版本无法正常工作的问题。 优化构建过程,提升整体稳定性和性能。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器