我正在尝试编写一个使用模拟 JSON 响应的单元测试。
基本上,我的 Intent 是将 json 文件添加到/res/raw,并使用与应用程序中相同的方法访问它们:
InputStream jsonStream = context.getResources().openRawResource(R.raw.mock_json_response)
但是当我这样做时,我收到以下错误:
android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f060001
我正在使用 robolectric 进行测试——我不确定这是否会改变必须访问外部文件的方式。
我尝试将 JSON 文件放入
/app/src/main/res
和 /app/src/test/res
但似乎都不起作用。是否可以通过这种方式访问测试中的资源?
最佳答案
不,您不能在单元测试期间使用资源 ID。
单元测试意味着它们将在没有真实设备和与真实资源的任何关系的情况下运行(在单元测试期间,您无权访问上下文,因此您无权访问资源)。
作为一种解决方法:
PowerMock 允许您使用 json 文件模拟 Web 响应。
希望它会有所帮助。
关于android - Android单元测试中如何通过ID访问资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30103845/