#鸿蒙通关秘籍#如何通过HiLog日志监听实现ArkTS用例的自动化验证?

HarmonyOS
2024-12-02 15:16:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
LDAP风谷

在ArkTS中无法直接注册日志回调接口,因此可以利用Native层来实现日志监听,并通过回调函数实现用例验证。

  1. 在Native中定义日志回调,通过napi接口设置日志过滤信息:
static napi_value SetLogCallback(napi_env env, napi_callback_info info) {
    size_t argc = 2;
    napi_value args[2];
    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
    size_t logSize;
    napi_get_value_string_utf8(env, args[0], logToFilter, MAX_LOG_LEN, &logSize);
    
    napi_valuetype valueType = napi_undefined;
    napi_typeof(env, args[1], &valueType);
    if (valueType != napi_function) {
        return nullptr;
    }

    napi_create_reference(env, args[1], 1, &callbackRef);
    g_env = env;
    OH_LOG_SetCallback(HiLogCallbackFilter);
    return nullptr;
}
  1. 实现自定义的HiLogCallbackFilter,以将被监听的日志发送回ArkTS端:
static void HiLogCallbackFilter(const LogType type, const LogLevel level, const unsigned int domain, const char *tag,
                 const char *msg) {
    std::string strMsg(msg, strlen(msg) + 1);    
    size_t foundIndex = strMsg.find(logToFilter);
    if (foundIndex != -1) {
        napi_value callback;
        napi_get_reference_value(g_env, callbackRef, &callback);
        napi_value hilogArg;
        napi_create_string_utf8(g_env, msg, NAPI_AUTO_LENGTH, &hilogArg);
        napi_value ret;
        napi_call_function(g_env, nullptr, callback, 1, &hilogArg, &ret);
    }
}
  1. 在Native层中提供接口来取消日志回调:
static napi_value CancelLogCallback(napi_env env, napi_callback_info info) {
    OH_LOG_SetCallback(nullptr);
    napi_delete_reference(env, callbackRef);
    return nullptr;
}

通过这样的构建,可以监听日志输出,从而实现测试用例的成功或失败验证。

分享
微博
QQ
微信
回复
2024-12-02 16:28:49
相关问题
自动化验收工具指南文档(Code Linter)
1450浏览 • 1回复 待解决
hdc hilog 可以抓取日志命令是什么
3453浏览 • 1回复 待解决
hilog日志如何实现落盘存储?
454浏览 • 1回复 待解决
hilog 怎么实现日志管控?
674浏览 • 1回复 待解决
hilog日志如何落盘存储
2907浏览 • 1回复 待解决
HarmonyOS应用自动化测试工具
549浏览 • 1回复 待解决