单元测试是保障代码质量的核心环节。本文将带你快速掌握在HarmonyOS中使用DevEco Testing编写单元测试的方法,只需10分钟即可完成第一个测试用例!
一、环境准备
- 开发工具
- DevEco Studio 5.0.4+
- HarmonyOS SDK 5.0.0+
- 工程配置 在
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();
});
});
三、运行与解读测试
- 执行测试 右键点击测试文件 → 选择
Run 'DateUtilsTest'
scss
[RESULT] DateUtilsTest
✓ testIsSameDay_positive (3ms)
✓ testIsSameDay_negative (1ms)
- 测试报告
- 绿色对勾:测试通过
- 代码覆盖率:在
Run
面板点击Show Coverage Data
查看 - 失败定位:直接跳转到断言失败的行
四、高级测试技巧
- Mock外部依赖 使用
@ohos/hypium
的mock功能隔离网络请求:
typescript
import { mock } from '@ohos/hypium';
const mockFetch = mock(globalThis, 'fetch', async () => {
return new Response(JSON.stringify({ data: "mock" }));
});
- 异步测试 处理Promise返回值:
typescript
it('testAsync', async () => {
const result = await fetchData();
expect(result).assertEqual("expected");
});
五、最佳实践
- 测试规范
- 测试类名:
被测试类名 + Test
- 测试方法:
test_方法名_测试场景
- 覆盖率目标:核心逻辑 ≥80%
- 常见问题
- 依赖缺失 :在
oh-package.json5
中确认@ohos/hypium
版本 - API兼容:确保测试设备API≥9
结语
通过本文,你已掌握了HarmonyOS单元测试的核心流程。持续编写单元测试能显著提升代码健壮性,减少线上故障。下一步建议:
- 为复杂业务模块添加测试
- 配置持续集成自动运行测试
- 探索UI测试框架
UiTest
环境说明:本文示例基于HarmonyOS 5.0.0+,DevEco Studio 5.0.4+