Robolectric安装

时间:2013-12-20 16:40:44

标签: android robolectric

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

2 个答案:

答案 0 :(得分:8)

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

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

throw new RuntimeException("Stub!");

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

Robolectric尝试解决此问题。从头开始,它会自定义ClassLoader,并且每次调用android代码都会被Robolectric实现替换。这使我们有可能在桌面JVM上测试我们的代码。但是当你测试设备上存在的不同内容时,你很难重新实现整个android以及陷阱。

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

我建议您在bloggoogle group上详细了解Robolectric。您还可以在slidehare和youtube上找到大量有关它的演示文稿。我鼓励您在对github Robolectric项目做出贡献后立即对此有所贡献,并希望对社区表示感谢。

答案 1 :(得分:1)

当我第一次尝试设置Robolectric时,我遇到了同样的问题。我的问题的原因是,我的项目src文件在包中:

com.example

但我的测试文件不在包内。当我将测试文件移动到:

com.example

问题得到解决。我希望这可能有所帮助。