【关键字】
HSP / 单元测试 / context
【问题描述】
-
问题1:entry依赖了HSP模块,运行单元测试时报以下错误:
============================ Failure[MSG_ERR_INSTALL_DEPENDENT_MODULE_NOT_EXIST] install /sdcard/entry-default-unsigned.hap failed! Error while Deploying HAP ============================
单元测试的Run Configuration中没有Deploy Multi Hap的选项,文档中也没找到相关说明,应该如何配置?
-
问题2:HSP模块源码中右键Show Context Actions只有新建Local Test的选项,能否新建Instrument Test?
-
问题3:HSP模块用到了data preferences、resourceManager等接口,都需要context,如何对这部分功能进行单元测试?
【解决方案】
-
问题1:此问题先试用问题3的临时方案测试。
-
问题2:在HSP模块根目录的index文件中导出供主模块引用。
export{hsp_localUnitTest_its}from"./src/test/LocalUnit.test"
说明:仪器测试是有规格要求的,需要被测试的模块是HAP才可以。
-
问题3:由于Instrument Test需要依赖HAP的原因,HSP无法使用Instrument Test单独测试,且本地测试能力当前有点弱,也无法满足测试要求。
临时的解决方案可以尝试使用getContext().createModuleContext('library')方法获取对应模块包的context。
示例代码如下:
it('testPreferences', 0, async () => { // 如何获取context? const context = getContext().createModuleContext('library'); const preferences = await dataPreferences.getPreferences(context, 'mystore', (err, val) => { if (err) { console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); return; } console.info("Succeeded in getting preferences."); })