【问题标题】:Is it possible to mock lifecycle method of Base Activity是否可以模拟基本活动的生命周期方法
【发布时间】:2019-02-09 20:14:19
【问题描述】:

我是嘲笑的初学者,我想知道 -
是否可以模拟生命周期方法?

我在那里覆盖了BaseActivityattachBaseContext,是否可以在此方法中模拟代码以进行测试?

更新。嗯,基本上这个方法里面我有

protected void attachBaseContext(Context base) {
    super.attachBaseContext(Application.myParam() ? updateBaseContext(base) : base);
}

而且我不需要updateBaseContext 进行测试。

【问题讨论】:

  • 您能否分享attachBaseContext 方法中的代码以及您想在该方法中模拟的内容?
  • @BirjuVachhani,我更新了我的问题,谢谢。
  • 需要打电话super.attachBaseContext()吗?

标签: android testing mocking


【解决方案1】:

您只能模拟模拟对象的方法。要模拟此方法,必须模拟您的活动。但这在这里不会做任何事情,因为您不能模拟具有 void 返回类型的方法。在这里,您的方法 attachBaseContext 具有 void 返回类型,因此它不能被模拟。这意味着您无法定义何时调用这些方法。我猜你想测试你的活动,所以你不会嘲笑它。

我不确定,但这可能对您有用:您可以做的是扩展您的活动类并覆盖此方法,但不要对其调用 super。像这样:

class MyActivity extends BaseActivity{

    protected void attachBaseContext(Context base) {
        // do nothing here. don't call super.
    }

}

通过这样做,当您的方法 attachBaseContext 被调用时,您的测试中不会发生任何事情。

【讨论】:

  • 谢谢,但这不起作用。我的每个活动都扩展了 BaseActivity 并且在测试期间我不希望调用 attachBaseContext 。它现在工作的唯一方法 - 我在测试之前手动禁用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多