用于AndroidInstrumentation测试的模拟FileInputStream

时间:2015-07-08 13:37:25

标签: android mockito inputstream fileinputstream

我想从Instrumentation测试中的文件中读取:

public class MyTest extends AndroidTestCase {

    @Override
    public void setUp() throws Exception {
        super.setUp();
        ...
    }
}

我尝试了以下方法,但没有成功: InputStream inputStream = getContext().getAssets().open("myFile");File myFile = new File("src/androidTest/myFile");

我尝试了

Resources res = getContext().getResources();
InputStream in = res.openRawResource(R.raw.testfile)

How to read a file from src/instrumentTest/resources directory in Android?中建议,但我无权访问R.

你知道我该怎么办?

我想模仿FileInputStream

附录:

我找到了一个解决方法来获取inputStream:

InputStream inputStream = getInstrumentation()
                .getContext()
                .getResources()
                .openRawResource(com.mypackage.instrumenttest.
                        R.raw.sifo_cookie_key_json);

我需要扩展InstrumentationTestCase而非AndroidTestCase才能访问R

但我需要的是fileInputStream,而不是inputStream,因为我需要跟随模拟返回:

when(mockContext.openFileInput(FILE_NAME)).thenReturn(fileInputStream);

openFileInput:http://developer.android.com/reference/android/content/Context.html#openFileInput(java.lang.String)返回fileInputStream

我做了一个解决方法,将InputStream转换为fileInputStream:

final File file = File.createTempFile("file", ".txt");
convertStreamToFile(inputStream, file);

FileInputStream fileInputStream = new FileInputStream(file);

但这不是一个好的解决方案,我想知道我是否可以FileInputStream而不是InputStream

0 个答案:

没有答案