Roboletic在安卓系统上的何处,保存测试运行期间创建的文件



我想确保字节数组被正确转换为jpg。

我将问题简化如下:

public String saveToFile(String filename, String contents) {
    String storageState = Environment.getExternalStorageState();
    if(!storageState.equals(Environment.MEDIA_MOUNTED)) {
        throw new IllegalStateException("Media must be mounted");
    }
    File directory = Environment.getExternalStorageDirectory();
    File file = new File(directory, filename);
    FileWriter fileWriter;
    try {
        fileWriter = new FileWriter(file, false);
        fileWriter.write(contents);
        fileWriter.close();
        return file.getAbsolutePath();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
@Test
public void testDummyTest() throws Exception{
    String out = saveToFile("preview-test.jpg", "preview-test.jpg");
}

此测试通过,路径类似file:///var/folders/z_/_syx1dpx7v9_pmktgdbx7f_m0000gn/T/android-external-cache8656399524188278404robolectric/ddf1c2ec-c0a8-44ce-90e4-7de2a384c57f/preview-test.jpg然而,我在我的机器上找不到这个文件(是的,我已经搜索过了)。我怀疑这是一个临时缓存,在我查看它之前,它被清除/删除了。

请告诉我如何定位"预览测试.jpg"文件,这样我就可以在图像查看器中打开它,从而证明图像看起来应该是这样的。谢谢

注意:问题不在于jpg编码,它只是直接访问文件。

我找到了部分解决方案。

我可以使用机器的绝对路径,而不是使用阴影环境来提供路径。例如root"/"会起作用。

所以代码看起来像。。。

public String saveToFile(String filename, String contents) throws IOException {
    File file = new File("/", filename);
    FileWriter fileWriter;
    fileWriter = new FileWriter(file, false);
    fileWriter.write(contents);
    fileWriter.close();
    return file.getAbsolutePath();
}
@Test
public void testDummyTest() throws Exception {
    String out = saveToFile("preview-test.jpg", "preview-test.jpg");
}

这会在机器的根目录上留下一个文件。:)希望这能帮助其他人。

最新更新