Skip to content

环境准备

在Linux上安装 hdc 工具

Snipaste_2025-03-01_12-13-37.png

下载完成后,逐步解压,如图所示,最终获取到Linux版本工具链

Snipaste_2025-03-01_12-28-06.png

Snipaste_2025-03-01_12-28-15.png

上传至服务器 unzip命令解压

bash
vim ~/.bashrc

# 粘贴以下至文件,/path/to/toolchains为存放工具链的位置
export PATH=$PATH:/path/to/toolchains

source ~/.bashrc

# 测试命令
hdc --help

# 安装依赖
sudo apt install lcov dos2unix && pip install lxml selectolax CppHeaderParser

找到 ohos_master/test/testfwk/developer_test/config/user_config.xml 填写ip和端口 image.png

  • windows 系统上输入hdc shell测试连接,左边出现#代表成功
  • linux终端上测试连接前首先在windows系统上输入”hdc -m -s 0.0.0.0:8710”建立服务端
  • 然后在linux终端输入”hdc -s 服务端ip:8710 list targets” ,左边出现#代表成功。
  • hdc –v 查看版本

编译命令只是示例,具体需要变更,更改--build-target后面的目标

bash

# 版本编译-带插件编译
./build.sh --product-name rk3568 --ccache --build-target bundle_framework --gn-args window_manager_feature_coverage=true

# 测试套编译-带插件编译
./build.sh --product-name rk3568 -ccache -T foundation/bundlemanager/bundle_framework:test_target --gn-args window_manager_feature_coverage=true
./build.sh --product-name rk3568 --ccache -T foundation/bundlemanager/bundle_framework:test_target --gn-args window_manager_feature_coverage=true

3.测试框架测试:在鸿蒙仓的根目录运行命令./test/testfwk/developer_test/start.sh

选择rk3568回车,

bash
run –t UT –tp 部件名 –ts 测试套 -cov coverage

# 单跑ut
run -t UT -tp bundle_framework

# 跑覆盖率
run -t UT -tp bundle_framework -cov coverage

这一步执行结束,就会生成覆盖率报告,根据日志输出找到报告。

五、添加代码覆盖率

2./etc/lcovrc 配置修改

lcov_branch_coverage = 1
genhtml_branch_coverage = 1

3.BUILD.gn脚本修改 编译阶段的BUILD.gn脚本内涉及开发代码(测试代码除外)编译链接操作的cflags_cc项,ldflags项,cflags项里全部添加一个"--coverage"

4.代码添加注释(可以提高代码覆盖率) 执行

python3 test/testfwk/developer_test/localCoverage/restore_comment/build_before_generate.py

内部命令行继续执行 “run –tp 部件名”

上述操作会备份一份代码,然后批量在原有代码的每一行添加注释。手动执行python3 restore_source_code.py会还原代码

5.修改all_subsystem_config.json 打开test/testfwk/developer_test/localCoverage/all_subsystem_config.json 按照格式添加部件

6.执行测试框架 执行 ./test/testfwk/developer_test/start.sh 内部命令行继续执行 “run –t UT –tp 部件名 –ts 测试套 –cov coverage”

7.查看结果 成功之后在test/testfwk/developer_test/localCoverage/codeCoverage/results/coverage/reports/cxx目录下有html文件夹,可以移动到其他文件夹打开(每次执行测试框架,html文件夹会被覆盖),下图是结果(打开index.html文件)。

如果有多余的文件夹需要排除,打开./test/testfwk/developer_test/localCoverage/codeCoverage/mutilProcess_CodeCoverage.py,在cut_info函数里的remove变量里添加排除路径可以用通配符,如’/v1/

8.如果字符编码相关的错误,检查是否是utf-8,换行是否是LF,可以用vscode查看dos2unix修改

资料: https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/测试子系统.md#/openharmony/docs/blob/master/zh-cn/device-dev/device-test/xdevice.mdhttps://gitee.com/openharmony/testfwk_developer_test

浪漫宇宙旗下知识库分享站

访客数--
|
访问量--