本文基于4.1 Release版本介绍如何使用unittest进行单元测试,4.1 Release之前的版本待后续实践后补充。其他更加细节的内容,如:unittest架构、作用,待后续学习后补充。

代码分析

  • 路径:drivers/peripheral/input/bundle.json
    ​ 指定test组件编译路径。
    "test": [
            "//drivers/peripheral/input/test:hdf_test_input"
          ],
    
    hdf_test_input为input驱动的测试组件名,测试其他组件,可以在对应的路径下寻找组件名。
  • 路径:drivers/peripheral/input/test/BUILD.gn
    ​ 对于驱动来说,每个驱动模块下都会有个test目录,存放包括unittest、fuzztest等测试的源码以及  build.gn脚本文件。
    group("hdf_test_input") {
        testonly = true
        deps = [ "benchmarktest:hdf_input_benchmark_test" ]
        if (drivers_peripheral_input_feature_model) {
          deps += [ "unittest/hdi:hdi_unittest_input" ]
        }
        if (drivers_peripheral_input_feature_udriver) {
          deps += [ "unittest/udriver:input_udriver_unittest" ]
        }
        if (drivers_peripheral_input_feature_support_ddk) {
          deps += [
            "benchmarktest:hid_ddk_benchmark_test",
            "fuzztest/hidddk_fuzzer:fuzztest",
            "unittest/ddk:hid_ddk_unittest",
          ]
        }
      }
    
  • 路径:drivers/peripheral/input/test/unittest/BUILD.gn
      编译hdf_unittest_input的源码。
     ohos_unittest("hdf_unittest_input") {
      module_out_path = module_output_path
      include_dirs = [
       "$INPUT_ROOT_DIR/hal/include",
       "$INPUT_ROOT_DIR/interfaces/include",
      ]
      ···
      deps = [ "$INPUT_ROOT_DIR/hal:hdi_input" ]
      ···
    

    操作步骤

    编译组件

    编译测试组件需要在编译的产品后加上组件名,如测试rk3568中的hdf_input组件,则使用此命令:
    ./build.sh --product-name rk3568 --build-target hdi_unittest_input
    
    编译成功后会在out/rk3568/tests/unittest生成一个可执行文件,如:`hdi_unittest_input
    路径:out/rk3568/tests/unittest/drivers_peripheral_input/input
    注意:4.0-release中此组件为 hdf_unittest_input

    传输文件

    使用hdc工具,将电脑开发环境上的可执行文件,推送到设备上。
    hdc命令格式为:hdc file send local remote
    其中:
  • local为本地文件路径
  • remote为远程目标路径
    使用此命令时可能会遇到两个问题:
  • 查看传输的文件是否为只读,如果是只读状态会报错,需要将只读状态取消。
  • 目标路径权限问题,经过测试可以将目标路径设为./data路径,或者自行查看哪个路径有权限进行操作(可以设置root权限进行传输,未成功,所以没有写出)。
    文件传输成功如图:

    img

    运行测试

  1. 找到测试的可执行文件,
  2. 修改权限chmod 777 hdf_test_inputchmod a+x hdf_test_input

    img

  3. 执行./hdf_unittest_input,等待测试完毕即可,测试结果如下图:

    img

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐