【问题标题】:How to access resources by ID in Android unit test?Android单元测试中如何通过ID访问资源?
【发布时间】:2015-05-07 14:20:05
【问题描述】:

我正在尝试编写一个使用模拟 JSON 响应的单元测试。

基本上,我的意图是将 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,但似乎都不起作用。

是否可以通过这种方式访问​​测试中的资源?

【问题讨论】:

标签: android tdd robolectric


【解决方案1】:

不,您不能在单元测试期间使用资源 ID。 单元测试意味着它们将在没有真实设备和与真实资源的任何关系的情况下运行(在单元测试期间,您无法访问上下文,因此您无法访问资源)。

作为一种解决方法:

  1. 您可以模拟您的交互器/用例并将您的 json 用作字符串。
  2. 您可以将 UI 测试与 Espresso 和 PowerMock 一起使用。

PowerMock 允许您使用 json 文件模拟 Web 响应。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 2018-03-26
    • 2020-10-14
    • 2021-10-29
    • 2012-03-04
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多