HarmonyOS鸿蒙Next中单元测试(ohosTest)开发了har包没有页面那种,如何获取rawfile中的文件?

HarmonyOS鸿蒙Next中单元测试(ohosTest)开发了har包没有页面那种,如何获取rawfile中的文件?

单元测试环境下(ohosTest)模式为stageMode,存arkts 开发har包文件,无页面,如何在单元测试中获取rawfile文件夹下面的文件

目录结构:

har/src/ohosTest/resources/rawfile/test.txt

这种文件在单元测试下,应该怎样读取到test.txt文件中的内容

能否提供一个工具类代码用户获取rawfile文件夹下面的文件内容,以便在单元测试中,获取该文件的内容。但该文件的并不会被打进har包中,只是单纯做单元测试使用


更多关于HarmonyOS鸿蒙Next中单元测试(ohosTest)开发了har包没有页面那种,如何获取rawfile中的文件?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

主要通过 resourceManager 通过资源管理对象获取.

getRawContext() {
    try {
      let context = getContext(this);
      context.resourceManager.getRawFileContent("test.txt", (error: BusinessError, value: Uint8Array) => {
        if (error != null) {
          console.error("error is " + error);
        } else {
          // 将二进制内容转换为String
          const str = buffer.from(value).toString()
          console.info(`>>> raw file :${str}`)
        }
      });
    } catch (error) {
      const businessErr = (error as BusinessError)
      let code = businessErr.code;
      let message = businessErr.message;
      console.error(`callback getRawFileContent failed, error code: ${code}, message: ${message}.`);
    }
  }

更多资源管理相关操作, 参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-resource-manager#使用说明

ps: 原理上ohosTest同样可以这样获取.

更多关于HarmonyOS鸿蒙Next中单元测试(ohosTest)开发了har包没有页面那种,如何获取rawfile中的文件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next的ohosTest单元测试中,要获取har包rawfile中的文件,需使用ResourceManager。具体方式:通过getRawFileContent()方法获取文件内容,传入rawfile目录下的文件路径。示例代码:resourceManager.getRawFileContent("test.txt")。注意路径需从rawfile根目录开始,不带rawfile前缀。测试环境中资源访问方式与主工程一致。

在HarmonyOS Next中,针对单元测试(ohosTest)环境下获取rawfile文件的问题,可以通过ResourceManager API来实现。以下是解决方案:

  1. 首先确保在单元测试模块的build-profile.json中正确配置了资源路径:
"buildOption": {
  "resource": "src/ohosTest/resources"
}
  1. 使用以下工具类代码读取rawfile文件内容:
import { resourceManager } from '@ohos.resourceManager';

export class RawFileUtil {
  static async getRawFileContent(context, fileName: string): Promise<string> {
    try {
      const resourceMgr = context.resourceManager;
      const fileData = await resourceMgr.getRawFileContent(fileName);
      return String.fromCharCode.apply(null, new Uint8Array(fileData));
    } catch (error) {
      console.error(`Failed to get raw file content: ${error}`);
      return '';
    }
  }
}
  1. 在单元测试中使用示例:
import { describe, it, expect } from '@ohos/hypium';
import { RawFileUtil } from '../utils/RawFileUtil';

describe('RawFileTest', () => {
  it('testReadRawFile', async () => {
    const content = await RawFileUtil.getRawFileContent(getContext(), 'test.txt');
    expect(content).assertNotEquals('');
  });
});

注意事项:

  1. 确保测试文件路径正确:src/ohosTest/resources/rawfile/
  2. 单元测试模式下资源访问方式与主模块不同,需要使用测试模块的context
  3. 文件内容会以Uint8Array形式返回,需要转换为字符串,
回到顶部