【问题标题】:How to access cache in Android for instrumented tests?如何访问 Android 中的缓存以进行检测测试?
【发布时间】:2021-09-18 16:28:02
【问题描述】:

我正在 Android 上进行仪器测试,但我无法访问缓存文件夹或文件夹以读取和写入文件。我使用android: requestLegacyExternalStorage =" true " 授予 Manifest 中的权限,并使用 ADB idea 插件授予它所有权限。 这是我的测试代码:

 @Test
    public void createPDfOk() {

        Context con = InstrumentationRegistry.getInstrumentation().getContext();
        File f2 = new File(con.getFilesDir(), "lorem_ipsum.pdf");
        File f = new File(con.getFilesDir(), "out.pdf");
}

以及错误代码:

Failed to ensure /data/user/0/com.some.package.test/files: mkdir failed: EACCES (Permission denied)
Failed to ensure /data/user/0/com.some.package.test/files: mkdir failed: EACCES (Permission denied)
E/com.some.package.MainActivity: Something fail in the process
/data/user/0/com.some.package.test/files/a_pdf.pdf: open failed: EACCES (Permission denied)

【问题讨论】:

  • “我在 Manifest 中使用 android 授予权限:requestLegacyExternalStorage =“true”,并使用 ADB idea 插件授予它所有权限”——这些与 @ 上的 getFilesDir() 无关987654325@。尝试运行 adb uninstall com.some.package.test 卸载测试 APK,然后查看您的测试是否运行。
  • 同样的问题,我无法访问测试包中的缓存。
  • 最后我发现我可以访问外部缓存,但我不知道如何访问内部缓存。

标签: java android testing junit


【解决方案1】:

插桩测试应用中没有缓存或文件目录。您可以使用主应用程序中的目录。

@Test
public void createPDfOk() {
    Context targetCtx = InstrumentationRegistry.getInstrumentation().getTargetContext();

    File f2 = new File(targetCtx.getFilesDir(), "lorem_ipsum.pdf");
    File f = new File(targetCtx.getFilesDir(), "out.pdf");
}

【讨论】:

    猜你喜欢
    • 2015-09-07
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多