10分钟上手DevEco Testing:编写你的第一个HarmonyOS5单元测试

单元测试是保障代码质量的核心环节。本文将带你快速掌握在HarmonyOS中使用DevEco Testing编写单元测试的方法,只需10分钟即可完成第一个测试用例!


一、环境准备

  1. 开发工具
  • DevEco Studio 5.0.4+
  • HarmonyOS SDK 5.0.0+
  1. 工程配置build-profile.json5中添加测试依赖:
json 复制代码
"dependencies": {
  "unitTest": {
    "compileOnly": true,
    "runtimeOnly": true
  }
}

二、创建第一个测试用例

示例场景:日期工具类测试

假设有日期处理工具DateUtils.ets

typescript 复制代码
// DateUtils.ets
export class DateUtils {
  static isSameDay(date1: Date, date2: Date): boolean {
    return date1.getFullYear() === date2.getFullYear() &&
           date1.getMonth() === date2.getMonth() &&
           date1.getDate() === date2.getDate();
  }
}

单元测试代码

src/test/ets/DateUtils.test.ets中编写测试:

typescript 复制代码
import { describe, it, expect } from '@ohos/hypium'; // 测试框架
import { DateUtils } from '../main/ets/utils/DateUtils';

describe('DateUtilsTest', () => {
  it('testIsSameDay_positive', 0, () => {
    const date1 = new Date(2025, 5, 9); // 6月9日
    const date2 = new Date(2025, 5, 9);
    expect(DateUtils.isSameDay(date1, date2)).assertTrue();
  });

  it('testIsSameDay_negative', 0, () => {
    const date1 = new Date(2025, 5, 9);
    const date2 = new Date(2025, 5, 10);
    expect(DateUtils.isSameDay(date1, date2)).assertFalse();
  });
});

三、运行与解读测试

  1. 执行测试 右键点击测试文件 → 选择Run 'DateUtilsTest'
scss 复制代码
[RESULT] DateUtilsTest
  ✓ testIsSameDay_positive (3ms)
  ✓ testIsSameDay_negative (1ms)
  1. 测试报告
  • 绿色对勾:测试通过
  • 代码覆盖率:在Run面板点击Show Coverage Data查看
  • 失败定位:直接跳转到断言失败的行

四、高级测试技巧

  1. Mock外部依赖 使用@ohos/hypium的mock功能隔离网络请求:
typescript 复制代码
import { mock } from '@ohos/hypium';

const mockFetch = mock(globalThis, 'fetch', async () => {
  return new Response(JSON.stringify({ data: "mock" }));
});
  1. 异步测试 处理Promise返回值:
typescript 复制代码
it('testAsync', async () => {
  const result = await fetchData();
  expect(result).assertEqual("expected");
});

五、最佳实践

  1. 测试规范
  • 测试类名:被测试类名 + Test
  • 测试方法:test_方法名_测试场景
  • 覆盖率目标:核心逻辑 ≥80%
  1. 常见问题
  • 依赖缺失 :在oh-package.json5中确认@ohos/hypium版本
  • API兼容:确保测试设备API≥9

结语

通过本文,你已掌握了HarmonyOS单元测试的核心流程。持续编写单元测试能显著提升代码健壮性,减少线上故障。下一步建议:

  1. 为复杂业务模块添加测试
  2. 配置持续集成自动运行测试
  3. 探索UI测试框架UiTest

环境说明:本文示例基于HarmonyOS 5.0.0+,DevEco Studio 5.0.4+

相关推荐
程序员二黑9 分钟前
Web UI自动化王者:Selenium WebDriver 核心原理与API详解
单元测试·测试·ab测试
健康平安的活着17 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
程序员二黑21 小时前
Pytest为何成为Python测试王者?Fixtures/Parametrize/Plugins三神器揭秘
单元测试·测试·ab测试
zru_96022 天前
Spring Boot 单元测试:@SpyBean 使用教程
spring boot·单元测试·log4j
程序员二黑2 天前
单元测试三大神器:unittest vs JUnit vs Jest 终极对决
单元测试·测试·ab测试
用户84913717547163 天前
JustAuth实战系列(第11期):测试驱动开发 - 质量保证与重构实践
java·设计模式·单元测试
川石课堂软件测试4 天前
JMeter并发测试与多进程测试
功能测试·jmeter·docker·容器·kubernetes·单元测试·prometheus
程序员二黑5 天前
(Python) vs (Java) vs(javaScript) 谁才是自动化测试的最佳拍档
单元测试·测试·ab测试
孟陬6 天前
HTML 处理以及性能对比 - Bun 单元测试系列
react.js·单元测试·bun
@Aurora.7 天前
【接口自动化测试】---YAML、JSON Schema
selenium·单元测试·测试用例·压力测试·postman·ab测试·测试覆盖率