HarmonyOS7 单元测试:从 @Test 到覆盖率
📅 2026/7/17 7:06:49
👁️ 次浏览
文章目录前言先有一个被测函数代码实现写测试文件核心代码怎么跑测试完整示例测试异步代码代码解析看覆盖率常见误区小白必踩完整可运行示例单元测试实现拆解写在最后前言“我改了一行不知道会不会弄坏别的功能”——这是没测试的噩梦。单元测试就是给代码买保险你写个小测试验证这个函数输入 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断言。从你最易出错的那个工具函数开始写第一个测试跑通的那一刻你会觉得以后敢改代码了。建议把项目的输入校验、金额计算、状态转换这类核心逻辑都补上测试——它们最该被保护也最容易被改坏。
文章目录前言hvigor 是什么代码实现模块类型:HAP / HAR / HSP新建一个 HAR 库模块核心代码完整示例主模块引用库代码解析实现拆解多模块构建配置代码清单拆分的经验法则常见误区(小白必踩)完整可运行示例:hvigor 多模块配置关键代…
📅 2026/7/17 7:06:49
1. 项目概述:Windows平台运行macOS的可行性方案在Windows电脑上体验macOS系统环境,对于开发者测试iOS应用、设计师使用Final Cut Pro,或是单纯想尝试不同操作系统的用户来说,都是个实用需求。通过虚拟机技术,我们可以在…
📅 2026/7/17 7:06:49
做CPA推广的兄弟,最近是不是觉得流量越来越难搞?以前随便投个Facebook广告,ROI还能看,现在呢?稍微不注意,预算就像水一样流走,最后连个水花都没见着。其实,问题往往不出在素材,也不出在出价,而是出在一个最基础、却最容易被忽视的地方——地理定位。也就是我们常说的…
📅 2026/7/17 7:06:35
1. ESP8266 RTOS开发环境概述ESP8266作为一款高性价比的Wi-Fi SoC芯片,在物联网领域有着广泛应用。其RTOS(Real-Time Operating System)开发环境相比传统的Non-OS SDK提供了更强大的多任务处理能力和资源管理机制。搭建一个稳定高效的开发环境…
📅 2026/7/17 7:56:04
1. 为什么Ubuntu 22.04需要单独配置中文输入法刚接触Ubuntu的Linux用户经常会困惑:明明在安装时选择了中文语言包,为什么系统还是无法输入中文?这其实涉及到Linux输入法框架的特殊性。与Windows/macOS不同,Ubuntu默认使用IBus输入…
📅 2026/7/17 7:56:04
1. N32G457XVL-STB开发板开箱与硬件初探 拿到N32G457XVL-STB开发板的第一印象是它的工业级设计风格。整个套件包含主控板、ST-Link调试器模块和一组排线。主控板采用蓝色PCB板设计,尺寸约为10cm7cm,正面最显眼的是那颗N32G457VEL7芯片——国民技术基于Co…
📅 2026/7/17 7:56:04
1. 工业界为何在大模型时代仍偏爱YOLO?当我第一次看到YOLO26在COCO数据集上57.5 mAP的成绩单时,确实被这个数字震撼到了——这已经接近某些需要GPU集群的大模型检测精度。但真正让我陷入思考的,是后来在产线部署时的一组对比数据:…
📅 2026/7/17 7:56:04
在日常的Web开发和自动化任务中,我们经常需要处理重复性的网页操作,比如数据抓取、表单填写、内容监控等。传统的方式需要编写复杂的脚本或使用浏览器插件,但这些方案往往存在学习成本高、兼容性差或隐私安全问题。BrowserOS的出现正是为了解…
📅 2026/7/17 7:56:04
如何在Blender中实现完美3D打印:完整支持3MF格式的终极指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat
你是否曾为3D打印工作流中的格式兼容性问题而烦恼…
📅 2026/7/17 7:55:04
1. 为什么选择用DeepSeek V4替换Codex的底座模型去年我在开发一个智能代码补全工具时,发现Codex的默认底座模型在复杂业务逻辑场景下表现不尽如人意。经过多次测试对比,DeepSeek V4在以下几个关键指标上展现出明显优势:代码补全准确率&#x…
📅 2026/7/17 0:00:32
1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…
📅 2026/7/17 0:00:32
在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。
对工程应用和在自己的图片上进行测试来…
📅 2026/7/17 0:00:32
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/17 2:37:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/16 21:45:29
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/16 14:13:12
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/17 6:11:34
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/16 4:59:31
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/17 2:40:57