AndroidInstrumentation测试的模拟文件输入流
我想在检测测试中读取文件:AndroidInstrumentation测试的模拟文件输入流,android,mockito,inputstream,fileinputstream,Android,Mockito,Inputstream,Fileinputstream,我想在检测测试中读取文件: public class MyTest extends AndroidTestCase { @Override public void setUp() throws Exception { super.setUp(); ... } } 我尝试了以下方法,但没有一种成功: InputStream InputStream=getContext().getAssets().open(“myFile”)和文件myFi
public class MyTest extends AndroidTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
...
}
}
我尝试了以下方法,但没有一种成功:
InputStream InputStream=getContext().getAssets().open(“myFile”)代码>和文件myFile=新文件(“src/androidTest/myFile”)代码>
我试了一下
Resources res = getContext().getResources();
InputStream in = res.openRawResource(R.raw.testfile)
这是在中建议的,但我没有访问R的权限
你知道我怎么做吗
我想模拟文件输入流
附录:
我找到了获取inputStream的解决方法:
InputStream inputStream = getInstrumentation()
.getContext()
.getResources()
.openRawResource(com.mypackage.instrumenttest.
R.raw.sifo_cookie_key_json);
final File file = File.createTempFile("file", ".txt");
convertStreamToFile(inputStream, file);
FileInputStream fileInputStream = new FileInputStream(file);
案例是我需要扩展InstrumentationTestCase
而不是AndroidTestCase
才能访问R
但我需要的是一个文件inputStream
,而不是inputStream,因为我需要以下模拟返回:
when(mockContext.openFileInput(FILE_NAME)).thenReturn(fileInputStream);
和openFileInput:返回fileInputStream
我做了一个将InputStream转换为fileInputStream的变通方法:
InputStream inputStream = getInstrumentation()
.getContext()
.getResources()
.openRawResource(com.mypackage.instrumenttest.
R.raw.sifo_cookie_key_json);
final File file = File.createTempFile("file", ".txt");
convertStreamToFile(inputStream, file);
FileInputStream fileInputStream = new FileInputStream(file);
但这不是一个好的解决方案,我想知道我是否可以得到FileInputStream
而不是InputStream
?您是在尝试读取真实的文件,还是创建一个模拟文件?一个我放在参考资料下原始文件夹中的真实文件。在这种情况下,您需要编辑问题和标记以删除“模拟”。除非你想要一个没有真实数据(或有限的真实数据)的假对象,否则mock和Mockito这样的模拟框架与你的问题无关。事实上,那么,解决你的问题了吗?我会调查一下,让你知道。谢谢你的帮助。