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
主要通过 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来实现。以下是解决方案:
- 首先确保在单元测试模块的build-profile.json中正确配置了资源路径:
"buildOption": {
"resource": "src/ohosTest/resources"
}
- 使用以下工具类代码读取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 '';
}
}
}
- 在单元测试中使用示例:
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('');
});
});
注意事项:
- 确保测试文件路径正确:
src/ohosTest/resources/rawfile/
- 单元测试模式下资源访问方式与主模块不同,需要使用测试模块的context
- 文件内容会以Uint8Array形式返回,需要转换为字符串,