更多内容请访问:https://harmonyos.51cto.com,与华为官方共建的鸿蒙技术社区本文档演示:写一个动态库libmoduleb_lib.z.so,然后写一个测试可执行文件ModuleBTest来验证动态库接口的正确性。代码目录结构partB/module在子系统sub_example中编译了一个动态库。partB的目录结构为//test/example/partBtest目录结构单元测试文件添加子系统配置添加子系统配置文件:code-v3.0-LTS/OpenHarmony/build/subsystem_config.json配置文件内容如下:。..,"sub_example":{"project":"hmf/test","path":"test/example","name":"sub_example","dir":"test"}在Hi3516DV300.json中添加的partB配置Hi3516DV300.json的位置:productdefine/common/products/Hi3516DV300.json添加如下:"2.0","type":"standard","product_build_path":"device/hisilicon/build","parts":{..."sub_example:partB":{}}}example/partB/module/的内容include/moduleB.h的内容如下:#ifndefMODULE_B_H#defineMODULE_B_HintSub(inta,intb);intAdd(inta,intb);#endif//MODULE_B_Hexample/partB/module/include/moduleB.c内容如下:#include”模块B.h"#includeintSub(inta,intb){returna-b;}intAdd(inta,intb){returna+b;}example/partB/module/BUILD.gn内容如下:import("//build/ohos.gni")config("moduleb_lib_config"){include_dirs=["include"]}ohos_shared_library("moduleb_lib"){sources=["//test/example/partB/module/include/moduleB.h","//test/example/partB/module/src/moduleB.c"]public_configs=[":moduleb_lib_config"]part_name="partB"subsystem_name="sub_example"}example/partB/module/test/unittest/module_test/moduleb_test.cpp内容如下:#include#includeextern"C"{#include"moduleB.h"}usingnamespacetesting::ext;//继承googletext的测试类classModuleBTest:publictesting::Test{public:staticvoidSetUpTestCase();staticvoidTearDownTestCase();voidSetUp();voidTearDown();};voidModuleBTest::SetUpTestCase(){}voidModuleBTest::TearDownTestCase(){}voidModuleBTest::SetUp(){/***@tc.setup:resetperfStat*/printf("ModuleBTest::SetUp\n");}voidModuleBTest::TearDown(){printf("ModuleBTest::TearDown\n");}/***@tc.name:ModuleBTest001*@tc.desc:Testbindstarttimeandend*@tc.type:FUNC*@tc.require:AR000CUF6O*/HWTEST_F(ModuleBTest,ModuleBTest001,TestSize.Level0){//step1:调用函数得到结果intimate=Sub(4,1);//Step2:使用断言比较预期和实际结果EXPECT_EQ(4,actual);}/***@tc.name:ModuleBTest002*@tc.desc:invalidendtimetest*@tc.type:FUNC*@tc.require:AR000CUF6O*/HWTEST_F(ModuleBTest,ModuleBTest002,TestSize.Level0){//判断Add函数调用的结果是否符合预期12EXPECT_EQ(12,Add(5,7));}example/partB/module/test/BUILD.gn内容如下:import("//build/ohos.gni")import("//build/test.gni")module_output_path="sub_example/partB"ohos_unittest("ModuleBTest"){module_out_path=module_output_pathinclude_dirs=["//test/example/partB/module/include"]cflags=["-Wall","-Werror",]sources=["unittest/module_test/moduleb_test.cpp"]deps=["//third_party/googletest:gtest_main",]external_deps=["partB:moduleb_lib",]part_name="partB"}group("unittest"){testonly=truedeps=[":ModuleBTest"]}example/ohos.build内容如下:注:单元测试加入“test_list”,编译系统加入ModuleBTest:{“subsystem”:“sub_example”,”parts”:{”partB”:{”module_list":["//test/example/partB/module:moduleb_lib"],"inner_kits":[{"type":"so","name":"//test/example/partB/module:moduleb_lib",“header”:{“header_files”:[“moduleB.h”],“header_base”:“//test/example/partB/module/include”}}],“system_kits”:[],“test_list”:["//test/example/partB/module/test:unittest"]}}}编译:重新编译moduleb_lib命令如下:./build.sh--product-nameHi3516DV300--ccache--build-targetmoduleb_libcompileresultin:out\ohos-arm-release\sub_example\partB编译ModuleBTest命令如下:./build.sh--product-nameHi3516DV300--ccache--build-targetModuleBTest编译结果在:out\ohos-arm-release\tests\unittest\sub_example\partB测试运行参考文档:https://gitee.com/openharmony/test_developertest这个可以参考写单元测试用例。根据官网文档,测试用例运行失败,如下图:编译成功后,可以将编译好的***Test用hdc_std.exe发送到Hi3516DV300开发板运行,输出串口终端测试用例的测试结果,修改文件权限,将文件:mount-oremount,rw/libmoduleb_lib.z.so替换到开发板目录/system/lib/:hdc_std.exefilesendZ:\out\ohos-arm-release\sub_example\partB\libmoduleb_lib.z.so/system/libModuleBTest放在开发板/data/test目录下。/data/test是我在开发板上自己建的一个目录。hdc_std.exefilesendZ:\out\ohos-arm-release\tests\unittest\sub_example\partB\ModuleBTest/data/test修改为可执行后:chmod0711/data/test/ModuleBTest可以运行单元测试用例:/data/test/ModuleBTest如图:第61行的测试结果不符合预期。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区