Robolectric安装

use*_*613 3 android robolectric

我正在尝试通过遵循github上的codepath教程来启动并运行Robolectric.但是,在运行测试时,eclipse会尝试下载org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.jar.这个30+ mb .jar文件究竟是什么?它应该替换android.jar教程中的文件吗?

Eug*_*nov 8

我先问一个问题:为什么我们需要Robolectric进行单元测试Android?

答案是,android.jar只提供类和实用程序方法的合同.这意味着这个jar中的每个方法,每个函数和构造函数只有一行代码:

throw new RuntimeException("Stub!");
Run Code Online (Sandbox Code Playgroud)

您只能针对此jar编译代码,而不能在桌面JVM上运行.如果您尝试运行,那么只要您尝试实例化android类或调用任何android实用程序方法,就会抛出异常.

Robolectric试图解决这个问题.从一开始它就定制了ClassLoader,每次调用android代码都会被一个Robolectric实现所取代.这使我们有可能在桌面JVM上测试我们的代码.但是当你测试设备上存在的不同东西时,你很难重新实现整个android以及陷阱.

所以策略从Robolectric版本2 改变了.它试图尽可能多地使用从源头开源的android源代码.这就是为什么你的测试的第一次运行Robolectric下载和缓存自己的android.jar,它是从android源码编译的.这样做是为了确保我们的测试环境行为接近我们在设备上的行为.

我建议你阅读更多关于Robolectric他们的博客,谷歌集团.您还可以在slidehare和youtube上找到大量有关它的演示文稿.我鼓励你一旦对它有信心就立即为github上的Robolectric项目做出贡献,并希望回馈社区.