Robolectic在Android上的位置,保存测试运行期间创建的文件?

时间:2013-11-20 18:30:53

标签: android unit-testing robolectric

我想确保正确地将字节数组转换为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 但是,我找不到这个文件我的机器(是的,我已经搜索过了)。我怀疑这是一个临时缓存,在我可以查看它之前它被清除/删除。

请告诉我如何找到“preview-test.jpg”文件,以便我可以在图像查看器中打开它,从而证明图像看起来应该是这样。感谢。

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

1 个答案:

答案 0 :(得分:1)

我找到了部分解决方案。

我可以使用机器的绝对路径,而不是使用阴影环境来提供路径。例如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");

}

然后将该文件留在计算机的根目录中。 :)希望这有助于其他人。