gpt4 book ai didi

android - 自定义阴影对象在 Robolectric 中如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:13 26 4
gpt4 key购买 nike

如果我为我的 Activity 编写自定义 Shadow,并使用 RobolectricTestRunner 注册它,框架是否会在 Activity 启动时拦截带有我的自定义 Shadow 的 Activity?

谢谢。

最佳答案

简短的回答是否定的。

Robolectric 对其拦截和检测的类有选择性。在撰写本文时,唯一将被检测的类必须具有与以下选择器之一匹配的完全限定类名:

android.* 
com.google.android.maps.*
org.apache.http.impl.client.DefaultRequestDirector

Robolectric 存在的全部原因是 Android SDK jar 中提供的类在 JVM 中调用时会抛出异常(即不在模拟器或设备上)。您的应用程序的 Activity 源不是“恶意”的(调用方法或构造函数时它可能不会抛出异常)。 Robolectric 的预期目的是允许您对应用程序的代码进行测试,否则由于 SDK 的编写方式,这是不可能的。创建 Robolectric 的其他一些原因是:

  • SDK 并不总是具有允许您查询由您的应用程序代码操作的 Android 对象状态的方法。可以写入影子以提供对此状态的访问。
  • Android SDK 中的许多类和方法都是最终的和/或私有(private)的或 protected ,因此很难创建您的应用程序代码所需的依赖项,否则这些依赖项将可供您的应用程序代码使用。

显然可以更改代码以隐藏任何类。过去曾有人讨论过将阴影功能提取到独立库中,以协助使用其他一些测试敌对 API 编写测试。

为什么要隐藏您的 Activity?

关于android - 自定义阴影对象在 Robolectric 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com