您现在的位置是:亿华云 > IT科技
Openharmony 测试用例指导大全
亿华云2025-10-09 01:36:11【IT科技】7人已围观
简介想了解更多内容,请访问:和华为官方合作共建的鸿蒙技术社区https://harmonyos.51cto.com该文档演示:编写一个动态库libmoduleb_lib.z.so , 然后编写一个测试可执
想了解更多内容,试用请访问:
和华为官方合作共建的试用鸿蒙技术社区
https://harmonyos.51cto.com
该文档演示:编写一个动态库libmoduleb_lib.z.so , 然后编写一个测试可执行文件ModuleBTest验证动态库接口的正确性。
代码目录结构
partB/module编译的试用是动态库,在子系统sub_example中。试用
partB的试用目录结构为//test/example/partB

test目录结构

单元测试文件添加
子系统配置添加
子系统配置文件:
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
添加的服务器托管内容如下:
{ "product_name": "Hi3516DV300", "product_company": "hisilicon", "product_device": "hi3516dv300", "version": "2.0", "type": "standard", "product_build_path": "device/hisilicon/build", "parts":{ ... "sub_example:partB":{ } } }example/partB/module/include/moduleB.h内容如下:
#ifndef MODULE_B_H #define MODULE_B_H int Sub(int a, int b); int Add(int a, int b); #endif //MODULE_B_Hexample/partB/module/include/moduleB.c内容如下:
#include "moduleB.h" #include <stdio.h> int Sub(int a, int b) { return a - b; } int Add(int a, int b) { return a + 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 <gtest/gtest.h> #include <cstdio> extern "C" { #include "moduleB.h" } using namespace testing::ext; // 继承googletext的Test类 class ModuleBTest : public testing::Test { public: static void SetUpTestCase(); static void TearDownTestCase(); void SetUp(); void TearDown(); }; void ModuleBTest::SetUpTestCase() { } void ModuleBTest::TearDownTestCase() { } void ModuleBTest::SetUp() { /** * @tc.setup: reset perfStat */ printf("ModuleBTest::SetUp\n"); } void ModuleBTest::TearDown() { printf("ModuleBTest::TearDown\n"); } /** * @tc.name: ModuleBTest001 * @tc.desc: Test bind start time and end * @tc.type: FUNC * @tc.require: AR000CUF6O */ HWTEST_F(ModuleBTest, ModuleBTest001, TestSize.Level0) { // step 1:调用函数获取结果 int actual = Sub(4, 1); // Step 2:使用断言比较预期与实际结果 EXPECT_EQ(4, actual); } /** * @tc.name: ModuleBTest002 * @tc.desc: invalid end time test * @tc.type: FUNC * @tc.require: AR000CUF6O */ HWTEST_F(ModuleBTest, ModuleBTest002, TestSize.Level0) { // 判断Add函数调用的结果是不是期望的12 EXPECT_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_path include_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 = true deps = [ ":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-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开发板中去运行,源码下载在串口终端上输出测试用例的试用测试结果。
修改文件权限,试用重新替换文件:
mount -o remount,试用rw /libmoduleb_lib.z.so 放入开发板/system/lib/的目录下:
hdc_std.exe file send Z:\out\ohos-arm-release\sub_example\partB\libmoduleb_lib.z.so /system/libModuleBTest 放入开发板/data/test目录下。 /data/test是试用本人在开发板上自建的目录。
hdc_std.exe file send Z:\out\ohos-arm-release\tests\unittest\sub_example\partB\ModuleBTest /data/test修改成可执行权后:
chmod 0711 /data/test/ModuleBTest即可运行单元测试用例:
/data/test/ModuleBTest
如图所示:61行测试结果与预期不符合。试用
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com
很赞哦!(656)
相关文章
- 域后缀首选.com,.net,然后是.cn。后缀选择不当,导致流量损失。域名是企业与互联网网址之间的链接,关键是企业在网络上存在的标志。因此,选择好域名是开展网上工作的首要重要条件。
- 四、长串数字域名
- 解析之后一般在十分钟内生效,如果没有生效可以联系域名服务商进行沟通。
- 记住那句话,域名向来不属于任何人,谁先买就归谁,购买期过后,域名又不再属于任何人。
- 四、一定要仔细阅读细节
- 一下域名,看有没有显示出你所解析的IP,如果有,就说明解析是生效的;如果没有,就说明解析是不生效的。
- 为什么现在中文域名觉得好?使用中文域名有什么好处?
- 为了避免将来给我们的个人站长带来的麻烦,在选择域名后缀时,我们的站长最好省略不稳定的后缀域名,比如n,因为我们不知道策略什么时候会改变,更不用说我们将来是否还能控制这个域名了。因此,如果站长不是企业,或者有选择的话,如果不能选择域名的cn类,最好不要选择它。
- 比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
- 解析之后一般在十分钟内生效,如果没有生效可以联系域名服务商进行沟通。
站长推荐
尽量不要在域名中出现特殊字符,这样的域名很容易导致访问者输入错误,同时给人留下不专业的印象,降低网站的可信度,并流失大量潜在客户。
5、使用企业名称的英文名称作为域名也是国内许多企业选择域名的一种方式,特别适合一些与计算机、网络和通信相关的行业。
第五步:重复第四步,直到找到正确的纪录。
其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
注册域名要了解几大点?新手有什么方式注册域名?
公司和个人选域名方法一样吗?有什么不同?
个人域名转为公司需要什么条件?个人域名转为公司该怎么做?
四、配置网站,填充内容