Robolectric:ShadowApplication?

Mar*_*tin 2 android robolectric

我在一些代码中通过stackoverflow和谷歌看到很多对ShadowApplication的引用,但我不知道它做了什么.

我不知道我是否缺少一些文档资源,但我不能提供任何好的资源,javadoc api也没有解释太多.

任何人都可以提供有关ShadowApplication的更多信息,还有更多资源,即培训,教程?

我确信我除了ShadowApplication之外还有很多其他的东西

yor*_*rkw 8

为了禁止在JVM中运行Android代码而不是Dalvik VM,Google已经删除了android.jar文件中的类,并将所有方法体替换为:

抛出新的RuntimeException("Stub!");

一般来说,Robolectric使用具有视图和资源加载的阴影对象来解决此问题.

阴影对象如何工作?

  • Robolectric拦截了正在测试的Android类的加载.
  • 重写Android类的方法体(使用javassist).
  • 将阴影对象绑定到新的Android对象.
  • 修改后的Android对象代理方法调用阴影对象.
  • 阴影支持Android类.即ShadowImageView支持ImageView类.
  • 对Android对象的方法调用将代理到相同签名的shadow对象的方法(如果存在).
  • 简单的实现给出了基本的行为.
  • 记录状态,以便在测试中进行验证.

查看此处的主题演讲以及此youtube会话以获取更多详细信息.