#星光计划2.0#OpenHarmony 单元测试1: 测试用例指导大全 原创 精华
【本文正在参与51CTO HarmonyOS技术社区创作者激励计划-星光计划2.0】
该文档演示:L2编写一个动态库libmoduleb_lib.z.so , 然后编写一个测试可执行文件ModuleBTest验证动态库接口的正确性。
目录
- 代码目录结构
- 单元测试文件添加
- 子系统配置添加
- 在Hi3516DV300.json中添加partB的配置
- example/partB/module/include/moduleB.h内容如下
- example/partB/module/include/moduleB.c内容如下
- example/partB/module/BUILD.gn内容如下
- example/partB/module/test/unittest/module_test/moduleb_test.cpp内容如下
- example/partB/module/test/BUILD.gn内容如下:
- example/ohos.build内容如下
- 编译:
- 测试运行
- 编译成功
- 修改系统权限,目录能读能写:
- libmoduleb_lib.z.so 放入开发板/system/lib/的目录下:
- ModuleBTest 放入开发板/data/test目录下。 /data/test是本人在开发板上自建的目录。
- 修改成可执行权后:
- 即可运行单元测试用例:
- 日志输出记录
代码目录结构
partB/module编译的是动态库,在子系统sub_example中。
partB的目录结构为//test/example/partB
test目录结构
单元测试文件添加
子系统配置添加
子系统配置文件:
code-v3.0-LTS/OpenHarmony/build/subsystem_config.json
配置文件添加的内容如下:
在Hi3516DV300.json中添加partB的配置
Hi3516DV300.json的位置:
productdefine/common/products/Hi3516DV300.json
添加的内容如下:
example/partB/module/include/moduleB.h内容如下
example/partB/module/include/moduleB.c内容如下
example/partB/module/BUILD.gn内容如下
example/partB/module/test/unittest/module_test/moduleb_test.cpp内容如下
example/partB/module/test/BUILD.gn内容如下:
example/ohos.build内容如下
注意:“test_list”,为单元测试添加,把ModuleBTest添加到编译系统中去:
编译:
重编编译moduleb_lib命令如下:
./build.sh --product-name Hi3516DV300 --ccache --build-target moduleb_lib
编译结果在:out\ohos-arm-release\sub_example\partB
编译ModuleBTest命令如下:
./build.sh --product-name Hi3516DV300 --ccache --build-target ModuleBTest
编译结果在:out\ohos-arm-release\tests\unittest\sub_example\partB
测试运行
参考文档:https://gitee.com/openharmony/test_developertest
这个可以参考编写单元测试用例,按照官网文档运行测试用例失败,如下图所示:
编译成功
编译成功后,可以把编译好的***Test用hdc_std.exe发送到Hi3516DV300开发板中去运行,在串口终端上输出测试用例的测试结果。
修改系统权限,目录能读能写:
libmoduleb_lib.z.so 放入开发板/system/lib/的目录下:
ModuleBTest 放入开发板/data/test目录下。 /data/test是本人在开发板上自建的目录。
修改成可执行权后:
即可运行单元测试用例:
如图所示:61行测试结果与预期不符合。
gtest的gmock使用流程参考OpenHarmony 单元测试2:gmock简单使用流程
代码库中的源码相对于文档中的代码有少许调整,基本结构不变:
【源代码】,重点关注example\partB\module目录
按照官网方式运行测试用例报错DeviceError
,主要是没有安装xdevice
和hdc_std.exe
系统环境变量配置。可以参考文档:L2 xts测试运行中的安装xdevice
和hdc_std.exe
环境变量配置, 然后再按照官网方式运行测试用例,结果也没有官网那么完美,估计是对L2的支持没有完善。
很完整的流程展示和代码讲解,感谢老师分享