【问题标题】:Robolectric and MockintoRobolectric 和 Mockinto
【发布时间】:2016-09-26 19:06:39
【问题描述】:

我是 Robolectric 和 Mockito 的新手。 我尝试编写一个简单的单元测试,但静态最终值来自 我的 Preferences 类为空,我不知道如何解决它。

【问题讨论】:

  • 分享您的代码。还要注意 Mockito 不能模拟静态和决赛
  • 嗨,我想在这个课程pastebin.com/EYCycQbHI 测试下载横幅方法。这是我的 测试 pastebin.com/XYDpSBAW,从这个类中我无法获得静态最终 url pastebin.com/bEcgRPjX。当我使用 MockitoTestRunner JsonObject.toString() 返回 null,所以我切换到 RoboletricTestRunner,无论如何我对 android 中的单元测试非常困惑。我在我的项目中使用 gradle,但现在我很困惑我必须使用 Mockito 或 Roboletctric 进行单元测试,或者同时使用它们。
  • 嗨,我错了,IndexPreferences.ADVERTICUM_ADVERT 不为空。我将此变量作为参数传递给 OkHttpRequest,当我写出请求时,我得到这个:Request{method=POST, url=null, tag=null} 但是当我写出变量时,我得到这个输出:url:@ 987654324@ 所以我认为,reqeust 的 toString() 被模拟并为 url 返回 null。
  • 好的,我的测试几乎成功了。我必须像 pastebin.com/s4D4WMim @InjectMocks Adverticum adverticum 一样初始化我的 ADVERTICUM_ID 变量;但是我可以将 adverticum 注入到我的班级中,但是 Adverticum 的依赖项没有被注入(SharedPreference)

标签: unit-testing mockito robolectric


【解决方案1】:

是的,您可以像下面那样存根类级别的变量。

例子:

    Class Abc{
    private static final variableName = null;
     -----;
      ----;
    rest of the code;
    }

--使用 Powermockito 模拟私有静态字段的步骤。

1) 字段字段 = PowerMockito.field(Abc.class,"variableName");

2) field.set(Abc.class, variableValue);

PS- 确保你使用了@PrepareforTest(Abc.class);

希望有用。

【讨论】:

  • 谢谢,此时我的静态最终变量没问题,但我有这个问题我有这个类:pastebin.com/7Zx2zJYM 我无法找到如何在单元测试中实例化它,共享首选项始终为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2012-11-30
  • 1970-01-01
相关资源
最近更新 更多