【问题标题】:Robolectric + Mockito + Marshmallow + PermissionsRobolectric + Mockito + Marshmallow + Permissions
【发布时间】:2016-02-12 19:22:30
【问题描述】:

我正在尝试为依赖于ActivityCompat.checkSelfPermission(..) 的结果的方法编写单元测试。为此,我需要做两件事:

  1. 调用Robolectric.shadowOf(activity.getApplication).grantPermission(...)
    这取决于由Robolectric.buildActivity(PictureActivity.class).get()构建的Activity

  2. 调用Mockito.verify(activity).someMethod(wasCalled)
    这取决于由
    Mockito.mock(MyActivity.class)

  3. 构建的Activity

因此,当我使用 Robolectric 创建我的 Activity 时,我无法使用 Mockito.verify。
当我使用 Mockito 创建我的 Activity 时,我无法使用 Robolectric.grantPermission。

我该如何解决这个问题?我是这两个框架的新手,所以也许我缺少一些简单的东西。

【问题讨论】:

  • 我会将逻辑包装在一些权限检查器中,并在活动测试中模拟它。但是,这个权限检查器的测试会带来同样的问题。我会检查 Robolectric 是否支持任何有权限的东西,否则我认为你需要编写自己的影子
  • 当您可以使用 Robolectric.application 时,为什么还要调用 activity.getApplication()?
  • @robinj 因为那样我就会向错误的应用程序授予权限。见stackoverflow.com/questions/35031301/…
  • 试试这个可能有用stackoverflow.com/a/41221852/5488468

标签: android mockito robolectric android-6.0-marshmallow


【解决方案1】:

阅读我在 https://stackoverflow.com/a/37704872/1345391 上的回答,我在其中解释了一种解决 robolectric 的 checkSelfPermission 问题的方法

【讨论】:

    【解决方案2】:

    没有详细查过,不过从今天起应该可以通过使用新的Android Testing Support Library来使用GrantPermissionRule

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-17
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多