# tdd-note **Repository Path**: chenjiafeng-openharmony/tdd-note ## Basic Information - **Project Name**: tdd-note - **Description**: 写tdd的一些开源材料收集 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 4 - **Created**: 2024-03-14 - **Last Updated**: 2025-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tdd-note ## 2025年01月06日,TDD专项已交接给周连海 ### 如何在蓝区跑不上板用例linux_unittest 跑linux_unittest的目的是为了避免pr引入问题。 拉完代码之后,带上pr,假设根目录是~/OpenHarmony - 只编译不上板的用例 - ./build.sh --product-name rk3568 --ccache --build-target linux_unittest - cd foundation/arkui/ace_engine/test/unittest/scripts/ - python3 run.py - 然后看 test_result.json - ~/OpenHarmony/out/rk3568/clang_x64/tests/unittest/ace_engine/test_result.json 第一次是在最新代码上面跑的,得到的结果作为baseline,保存。 第二次是带上了自己的pr,重新执行上述步骤,得到第二个结果。 git diff对比两次结果。这时候就知道,pr是否导致tdd失败。 **将diff对比的截图贴到PR中** *注意:不上板的build targets只能是linux_unittest* #### 加快linux_unittest的编译和速度 开发通常只关心一两个测试套,可以在.gn文件中搜索linux_unittest 的deps中删除无关的测试套,只保留自己关心的。 然后删除out/rk3568/clang_x64目录,重新编译、执行。 ### 蓝区如何跑全量上板用例ace_engine_test linux_unittest是ace_engine_test的一个子集 编译:./build.sh --product-name rk3568 --ccache --build-target ace_engine_test 编译产物:./out/rk3568/tests/unittest/ace_engine 使用方式:拷贝到本地,执行参考 https://gitee.com/openharmony/testfwk_developer_test 先连rk板,镜像和代码最好对应上,否则部分用例会失败(目前只发现napi的用例)。 testfwk_developer_test/.start.bat之后,选4(wifi), 输入 run -t UT -tp ace_engine 执行全量用例,测试结果在testfwk_developer_test/report中 #### 如何确认PR是否引入fail问题 本地拉一份代码,跑一份不带pr的结果,再把patch打上,编译、再跑一次,对比下结果。 ### 写tdd的一些开源材料收集 1、如何写tdd https://gitee.com/openharmony/testfwk_developer_test 2、蓝区本地跑tdd覆盖率 文件在./tdd-note/coverage中 参考 https://gitee.com/liyujie43/arkui-developer-test-tool 3、覆盖率 https://blog.csdn.net/cjjmt/article/details/126487676 ### 下载代码 repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo sync -c -j24 build/prebuilts_download.sh 第二次编译 ./build.sh --product-name rk3568 --ccache --build-target ace_engine --fast-rebuild 4、反编译 代码根目录下执行 prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-addr2line -f -i -C -a -e 测试套名 崩溃栈地址1 崩溃栈地址2 ### 测试单线程内存占用 ./build.sh --product-name rk3568 --ccache --build-target TDDarkui_ace_engine --ninja-args=-j1 ### 编译命令 编译ohos-sdk ./build.sh --product-name ohos-sdk --gn-args full_mini_debug=false --keep-ninja-going --gn-args is_use_check_deps=false 拉代码,首次编译 repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify;repo sync -c -j24;build/prebuilts_download.sh;./build.sh --product-name rk3568 --ccache --build-target ace_engine;./build.sh --product-name rk3568 --ccache --build-target linux_unittest;./build.sh --product-name rk3568 --ccache --build-target ace_engine_test; ### 跑覆盖率 https://gitee.com/liyujie43/arkui-developer-test-tool 安装lcov 修改lcov_branch_coverage = 1 配置config.ini,路径要需要双斜杠 本地python环境安装colorlog、paramiko 服务器执行./build.sh --product-name rk3568 --ccache --build-target select_overlay_test_ng --gn-args use_clang_coverage=true 本地执行 python build.py -b ace_engine_test -f -c ### windows下搭建编译环境 https://gitee.com/kangchongtao/note/blob/master/%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md ### 执行上版的测试套 run -t UT -tp ace_engine -ts text_test_ng ### 蓝区OH编译环境搭建 https://gitee.com/yan-shuifeng/arkui_docs/blob/master/%E8%93%9D%E5%8C%BA%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/procedure.md#5-vscode%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA ### 带跳转的编译 ./build.sh --product-name rk3568 --ccache --build-target ace_engine --gn-flags='--export-compile-commands' ### 执行XTS run -l ActsAceCArkUI15XCTest;ActsAceEtsModuleImageTextApi12Test;ActsAceEtsModuleThemeHVigorTest;ActsAceEtsModuleImageTextNowearApi13Test;ActsAceCArkUI151Test;ActsAceEtsModuleImageTextNowearApi12Test;ActsAceEtsModuleModifier14Test;ActsAceEtsModuleImageTextApi13Test;ActsAceCArkUI18Test;ActsAceEtsModuleThemeApi12Test;ActsAceEtsModuleModifierTest;ActsAceEtsModuleImageTextNowearApi11Test;ActsAceEtsModuleModifierNoWearTest;ActsAceEtsModuleImageTextNowearApi16Test;ActsAceEtsModuleImageTextApi16Test;ActsAceEtsModuleImageTextApi18Test;ActsAceEtsModuleImageTextApi14Test;ActsAceCArkUITest;ActsAceCArkUI13Test;ActsAceEtsModuleImageTextApi12OtherTest;ActsAceCArkUI14Test;ActsAceCArkUIWearCropTest;ActsAceCArkUI15Test;ActsAceCArkUINoWear18Test;ActsAceCArkUI16Test;ActsAceEtsModuleImageTextNowearApi15Test;ActsAceEtsModuleImageTextApi11OtherTest;ActsAceEtsModuleImageTextNowearApi18Test;ActsAceEtsModuleImageTextApi15Test;ActsAceCArkUINoWear14Test;ActsAceEtsModuleImageTextApi11Test;ActsAceCArkUINoWear15Test;