我想从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
?