如何从Android检测测试中的测试资产访问File对象?

时间:2018-04-17 12:20:25

标签: android android-espresso android-assets android-instrumentation

我想在Android检测测试中以某种方式阅读File对象。

我正在尝试使用assets

中的androidTest文件夹来获取它
File("//android_asset/myFile.jpg")

不幸的是我无法获得此文件。有谁知道如何创建这样的File对象?它不一定必须位于assets

2 个答案:

答案 0 :(得分:1)

如果您需要在设备中复制文件(例如,为了测试需要文件路径而不是流的C ++库),则可以通过以下方式手动复制:

    @Test
    public void checkFileWorkingTxt() throws IOException {
        String path = "filepath.txt";
        Context context = InstrumentationRegistry.getTargetContext();

        // Creation of local file.
        InputStream inputStream = context.getResources().getAssets().open(path);

        // Copy file to device root folder
        File f = new File(context.getExternalCacheDir() + path);
        FileOutputStream outputStream = new FileOutputStream(f);
        FileUtils.copy(inputStream, outputStream);

        // Check that everything works with native function
        bool result = NativeLibrary.check_txt(f.getAbsolutePath());
        assertTrue(result);
    }

这可能不是最好的方法,但是它可行。

答案 1 :(得分:-1)

假设您在src/androidTest/assets/myasset.txt下有一个文件,您可以像InstrumentationRegistry.getContext().getResources().getAssets().open("myasset.txt");

那样访问它