Openharmony 测试用例指导大全

开发 前端
编写一个动态库libmoduleb_lib.z.so , 然后编写一个测试可执行文件ModuleBTest验证动态库接口的正确性。

[[441435]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

该文档演示:编写一个动态库libmoduleb_lib.z.so , 然后编写一个测试可执行文件ModuleBTest验证动态库接口的正确性。

代码目录结构

partB/module编译的是动态库,在子系统sub_example中。

partB的目录结构为//test/example/partB

Openharmony  测试用例指导大全-鸿蒙HarmonyOS技术社区

test目录结构

Openharmony  测试用例指导大全-鸿蒙HarmonyOS技术社区

单元测试文件添加

子系统配置添加

子系统配置文件:

code-v3.0-LTS/OpenHarmony/build/subsystem_config.json

配置文件添加的内容如下:

  1. ... 
  2. "sub_example": { 
  3.   "project""hmf/test"
  4.   "path""test/example"
  5.   "name""sub_example"
  6.   "dir""test" 

在Hi3516DV300.json中添加partB的配置

Hi3516DV300.json的位置:

productdefine/common/products/Hi3516DV300.json

添加的内容如下:

  1.   "product_name""Hi3516DV300"
  2.   "product_company""hisilicon"
  3.   "product_device""hi3516dv300"
  4.   "version""2.0"
  5.   "type""standard"
  6.   "product_build_path""device/hisilicon/build"
  7.   "parts":{ 
  8.     ... 
  9.     "sub_example:partB":{} 
  10.   } 

example/partB/module/include/moduleB.h内容如下:

  1. #ifndef MODULE_B_H 
  2. #define MODULE_B_H 
  3.  
  4. int Sub(int a, int b);  
  5. int Add(int a, int b); 
  6. #endif //MODULE_B_H 

example/partB/module/include/moduleB.c内容如下:

  1. #include "moduleB.h" 
  2. #include <stdio.h> 
  3.  
  4. int Sub(int a, int b) 
  5.     return a - b; 
  6.  
  7. int Add(int a, int b) 
  8.     return a + b; 

example/partB/module/BUILD.gn内容如下:

  1. import("//build/ohos.gni"
  2.  
  3. config("moduleb_lib_config") { 
  4.   include_dirs = [ "include" ] 
  5. ohos_shared_library("moduleb_lib") { 
  6.   sources = [ 
  7.     "//test/example/partB/module/include/moduleB.h"
  8.     "//test/example/partB/module/src/moduleB.c" 
  9.   ] 
  10.   public_configs = [ ":moduleb_lib_config" ] 
  11.   part_name = "partB" 
  12.   subsystem_name = "sub_example" 

example/partB/module/test/unittest/module_test/moduleb_test.cpp内容如下:

  1. #include <gtest/gtest.h> 
  2. #include <cstdio> 
  3. extern "C" { 
  4. #include "moduleB.h" 
  5.  
  6. using namespace testing::ext; 
  7.  
  8. // 继承googletext的Test类 
  9. class ModuleBTest : public testing::Test { 
  10. public
  11.     static void SetUpTestCase(); 
  12.     static void TearDownTestCase(); 
  13.     void SetUp(); 
  14.     void TearDown(); 
  15. }; 
  16.  
  17. void ModuleBTest::SetUpTestCase() {} 
  18.  
  19. void ModuleBTest::TearDownTestCase() {} 
  20.  
  21. void ModuleBTest::SetUp() 
  22.     /** 
  23.      * @tc.setup: reset perfStat 
  24.      */ 
  25.     printf("ModuleBTest::SetUp\n"); 
  26.  
  27. void ModuleBTest::TearDown() { 
  28.     printf("ModuleBTest::TearDown\n"); 
  29.  
  30. /** 
  31.  * @tc.name: ModuleBTest001 
  32.  * @tc.desc: Test bind start time and end 
  33.  * @tc.type: FUNC 
  34.  * @tc.require: AR000CUF6O 
  35.  */ 
  36. HWTEST_F(ModuleBTest, ModuleBTest001, TestSize.Level0) 
  37.     // step 1:调用函数获取结果 
  38.     int actual = Sub(4, 1); 
  39.  
  40.     // Step 2:使用断言比较预期与实际结果 
  41.     EXPECT_EQ(4, actual); 
  42.  
  43. /** 
  44.  * @tc.name: ModuleBTest002 
  45.  * @tc.desc: invalid end time test 
  46.  * @tc.type: FUNC 
  47.  * @tc.require: AR000CUF6O 
  48.  */ 
  49. HWTEST_F(ModuleBTest, ModuleBTest002, TestSize.Level0) 
  50.     // 判断Add函数调用的结果是不是期望的12 
  51.     EXPECT_EQ(12, Add(5, 7));  

example/partB/module/test/BUILD.gn内容如下:

  1. import("//build/ohos.gni"
  2. import("//build/test.gni"
  3.  
  4. module_output_path = "sub_example/partB" 
  5.  
  6. ohos_unittest("ModuleBTest") { 
  7.   module_out_path = module_output_path 
  8.  
  9.   include_dirs = [ 
  10.     "//test/example/partB/module/include" 
  11.    ] 
  12.   cflags = [ 
  13.     "-Wall"
  14.     "-Werror"
  15.   ] 
  16.   sources = [ 
  17.     "unittest/module_test/moduleb_test.cpp" 
  18.   ] 
  19.  
  20.   deps = [ 
  21.     "//third_party/googletest:gtest_main"
  22.   ] 
  23.   external_deps = [ "partB:moduleb_lib", ] 
  24.   part_name = "partB" 
  25.  
  26. group("unittest") { 
  27.   testonly = true 
  28.   deps = [ ":ModuleBTest" ] 

example/ohos.build内容如下:

注意:“test_list”,为单元测试添加,把ModuleBTest添加到编译系统中去:

  1.     "subsystem""sub_example"
  2.     "parts": { 
  3.         "partB": { 
  4.             "module_list": [ 
  5.                 "//test/example/partB/module:moduleb_lib" 
  6.             ], 
  7.             "inner_kits": [ 
  8.                 { 
  9.                     "type""so"
  10.                     "name""//test/example/partB/module:moduleb_lib"
  11.                     "header": { 
  12.                         "header_files": [ 
  13.                             "moduleB.h" 
  14.                         ], 
  15.                         "header_base""//test/example/partB/module/include" 
  16.                     } 
  17.                 } 
  18.             ], 
  19.             "system_kits": [], 
  20.             "test_list": [ 
  21.                 "//test/example/partB/module/test:unittest" 
  22.             ] 
  23.         } 
  24.     } 

编译:

重编编译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

这个可以参考编写单元测试用例,按照官网文档运行测试用例失败,如下图所示:

Openharmony  测试用例指导大全-鸿蒙HarmonyOS技术社区
Openharmony  测试用例指导大全-鸿蒙HarmonyOS技术社区

编译成功

编译成功后,可以把编译好的***Test用hdc_std.exe发送到Hi3516DV300开发板中去运行,在串口终端上输出测试用例的测试结果。

修改文件权限,重新替换文件:

  1. mount -o remount,rw / 

libmoduleb_lib.z.so 放入开发板/system/lib/的目录下:

  1. hdc_std.exe file send Z:\out\ohos-arm-release\sub_example\partB\libmoduleb_lib.z.so /system/lib 

ModuleBTest 放入开发板/data/test目录下。 /data/test是本人在开发板上自建的目录。

  1. hdc_std.exe file send Z:\out\ohos-arm-release\tests\unittest\sub_example\partB\ModuleBTest /data/test 

修改成可执行权后:

  1. chmod 0711 /data/test/ModuleBTest 

即可运行单元测试用例:

  1. /data/test/ModuleBTest 
Openharmony  测试用例指导大全-鸿蒙HarmonyOS技术社区

如图所示:61行测试结果与预期不符合。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2023-06-09 15:24:50

UiTest接口鸿蒙

2021-03-04 15:43:29

前端测试工具开发

2011-06-08 17:23:12

测试用例

2011-05-16 15:18:18

测试用例

2011-05-16 15:09:20

测试用例

2022-05-10 14:54:13

验收标准测试用例

2011-04-18 10:46:39

接口测试

2011-07-04 18:06:52

测试用例

2011-12-23 17:03:29

性能测试用例设计

2011-05-16 14:54:12

测试用例

2022-01-19 17:48:57

测试用例开发

2020-08-25 08:03:59

测试Sharness结构

2011-09-01 10:05:24

PhoneGap应用程序测试

2022-06-13 09:00:00

Selenium测试Web

2024-09-29 15:26:53

MySQLPython

2011-06-03 16:58:03

测试用例

2011-11-02 09:54:37

测试

2021-11-07 14:33:48

算法Pairwise功能

2022-03-14 15:19:36

鸿蒙开发板操作系统

2022-01-14 11:51:00

测试工具自动化
点赞
收藏

51CTO技术栈公众号