HarmonyOS7 单元测试:从 @Test 到覆盖率 📅 发布时间:2026/7/17 7:05:07 👁️ 浏览次数: 文章目录前言先有一个被测函数代码实现写测试文件核心代码怎么跑测试完整示例测试异步代码代码解析看覆盖率常见误区小白必踩完整可运行示例单元测试实现拆解写在最后前言“我改了一行不知道会不会弄坏别的功能”——这是没测试的噩梦。单元测试就是给代码买保险你写个小测试验证这个函数输入 A 应该输出 B以后谁改坏了立马红。HarmonyOS 用ohos/hypium测试框架。这篇文章从零写一个测试讲清Test、断言、怎么跑、怎么看覆盖率。先有一个被测函数测试的前提是你要测的代码是纯函数或可独立调用的。比如一个工具代码实现// utils/Calc.etsexportfunctionadd(a:number,b:number):number{returnab}exportfunctionisEven(n:number):boolean{returnn%20}写测试文件测试文件一般放在src/test/下用describe/it组织用Test标注用例核心代码import{describe,it,expect}fromohos/hypiumimport{add,isEven}from../utils/CalcexportdefaultfunctioncalcTest(){describe(Calc 测试,(){it(add 两数相加,0,(){expect(add(1,2)).assertEqual(3)})it(isEven 偶数判断,0,(){expect(isEven(4)).assertEqual(true)expect(isEven(3)).assertEqual(false)})})}讲解describe(Calc 测试, ...)测试套件名分组用。it(用例名, 0, () {...})单个测试用例0是用例标记位。expect(x).assertEqual(y)断言x 应该等于 y不等就测试失败。断言方法还有assertTrue、assertClose近似相等、assertFail等按场景选。怎么跑测试在 DevEco 里右键测试文件 → “Run ‘xxxTest’”或用命令行。跑完会显示每个用例过没过完整示例Calc 测试 ✓ add 两数相加 ✓ isEven 偶数判断 2 passed, 0 failed红的就是要修的。测试的价值就在这一刻改坏代码立刻红给你看。测试异步代码涉及 Promise 的用async/await代码解析it(异步请求返回数据,0,async(){constresawaitfetchUser(1)expect(res.id).assertEqual(1)})看覆盖率覆盖率告诉你测试覆盖了多少代码行。DevEco 开启覆盖率后会标出哪些行没被测到红色提示你补用例。行覆盖率多少行代码被执行过。分支覆盖率if/else 各分支是否都测了。目标不必 100%但核心逻辑计算、校验、状态机尽量覆盖到。常见误区小白必踩误区说明只测主流程不测边界add(1,2)过了就以为没问题负数、空值、超大数才是容易出错的。异步不await测试 Promise 忘了async/await用例直接过但啥也没验。不看覆盖率覆盖率告诉你哪些行没测到红的那几行往往就是 bug 藏身处。下面这段代码可以直接复制到 DevEco Studio 里运行。建议你边读边敲改一改文末「动手改一改」里的参数亲眼看看效果。完整可运行示例单元测试用Test验证一个纯函数。实现拆解// 用 Hypium 写单元测试import{describe,it,expect}fromohos/hypiumfunctionadd(a:number,b:number):number{returnab}exportdefaultfunctiontestSuite(){describe(math,(){it(add 应该返回两数之和,0,(){expect(add(1,2)).assertEqual(3)})})}你会看到什么运行测试Hypium 报告add(1,2) 3通过。把断言改成assertEqual(4)会立刻变红直观体现「测试即文档」。动手改一改加一个it(负数相加)覆盖边界。用expect(x).assertFail()故意制造失败看报告样式。给被测函数加Test标注做模块内联测试。写在最后单元测试不是负担是改代码时的底气。套路就三步导入被测函数 → 写it用例 →expect断言。从你最易出错的那个工具函数开始写第一个测试跑通的那一刻你会觉得以后敢改代码了。建议把项目的输入校验、金额计算、状态转换这类核心逻辑都补上测试——它们最该被保护也最容易被改坏。
OpenVLA-OFT:面向真机部署的视觉语言动作模型微调工程方案 1. 这不是普通微调:OpenVLA-OFT 是一套“手术级”优化方案 OpenVLA-OFT 这个名字里藏着两个关键信号:“OpenVLA”是当前最主流的开源视觉-语言-动作(Vision-Language-Action, VLA)基座模型,而“OFT”不是泛泛而谈的“… 2026/7/17 7:03:07
程序员久坐提醒方案:从系统工具到智能脚本 1. 为什么我们需要久坐提醒?作为一个长期伏案工作的程序员,我深刻理解久坐带来的健康隐患。连续几个小时盯着屏幕不动,不仅会导致腰背酸痛、颈椎僵硬,还可能引发更严重的健康问题。医学研究表明,每30-60分钟起身活动5分… 2026/7/17 7:01:04
Bilibili-Old:三步轻松恢复B站经典界面,告别新版不适体验 Bilibili-Old:三步轻松恢复B站经典界面,告别新版不适体验 【免费下载链接】Bilibili-Old 恢复旧版Bilibili页面,为了那些念旧的人。 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Old 你是否还记得那个简洁明了的B站界面&am… 2026/7/17 6:59:03
扣子编程简介 本节将介绍扣子平台注册、登录以及扣子编程的使用方法。 1.5.1注册账号与登录 单击扣子官网主页上方的“产品”菜单(图1-1),打开的菜单项列表,单击“扣子编程”菜单项,打开“扣子编程”首页,如图1-2所示。… 2026/7/17 8:29:33
CANN/asc-devkit Swish激活函数API Swish 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann… 2026/7/17 8:29:33
CANN/Ascend C SetLocalWorkspace接口 SetLocalWorkspace 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitc… 2026/7/17 8:27:33
CNN架构进化与轻量化设计五大黄金法则 1. 从AlexNet到EfficientNet:CNN架构设计的进化轨迹 2012年AlexNet在ImageNet竞赛中的突破性表现,标志着现代CNN架构的诞生。当时的设计还带着明显的实验性质——用两个GPU并行计算仅仅是因为显存限制,而ReLU激活函数的选择最初也只是为了缓解… 2026/7/17 8:25:33
风火轮YY3568开发板评测:RK3568标杆之作 1. 风火轮YY3568开发板初印象:开箱即惊艳 当我拆开快递包装时,这块被业界称为"RK3568开发板天花板"的硬件就静静躺在防静电袋里。作为常年接触各类嵌入式设备的开发者,第一眼就被它的做工震撼到了——墨绿色PCB板上整齐排列着全贴片… 2026/7/17 8:19:32
CANN/asc-devkit SIMT any函数 any 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/a… 2026/7/17 8:19:32
【WPS AI表格避坑白皮书】:实测发现87%用户正在误用AI函数——这5个致命错误导致结果偏差超42% 更多请点击: https://intelliparadigm.com 第一章:WPS AI表格的核心能力与适用边界 WPS AI表格将大语言模型能力深度集成于电子表格环境中,实现从自然语言指令到结构化数据操作的端到端转化。其核心并非替代传统公式或宏编程,而是… 2026/7/17 0:00:08
Cursor终端插件生态避坑指南:23个实测低效插件黑名单,附3个自研轻量替代方案 更多请点击: https://intelliparadigm.com 第一章:Cursor终端插件生态避坑指南概览 Cursor 作为基于 VS Code 内核构建的 AI 原生编辑器,其终端插件生态虽活跃,但存在兼容性断层、权限策略突变与调试链路断裂等典型风险。开发者常… 2026/7/17 0:00:08
ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 更多请点击: https://codechina.net 第一章:ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 提示词工程已从经验试错迈入变量驱动的科学阶段。实证研究表明,影响… 2026/7/17 0:00:08
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/17 0:28:39
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/17 6:02:24
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/16 12:08:13