首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Robolectric安装

Robolectric安装
EN

Stack Overflow用户
提问于 2013-12-21 00:40:44
回答 2查看 1.6K关注 0票数 3

我正在尝试通过在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文件?

EN

回答 2

Stack Overflow用户

发布于 2013-12-29 05:52:16

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

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

代码语言:javascript
复制
throw new RuntimeException("Stub!");

您只能在这个jar上编译代码,而不能在桌面JVM上运行。如果你试图运行,那么当你试图实例化一个android类或调用任何android实用程序方法时,就会抛出一个异常。

Robolectric试图解决这个问题。从一开始,它就定制了ClassLoader,并且每次对安卓代码的调用都被替换为一个Robolectric实现。这使我们有可能在桌面JVM上测试我们的代码。但这也很难重新实现整个android,当你在设备上测试不同的东西时,你也会陷入这种情况。

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

我建议你在他们的bloggoogle group上阅读更多关于Robolectric的信息。你也可以在slideshare和youtube上找到大量关于它的演示文稿。我鼓励你一有信心就在github上为Robolectric项目做贡献,并希望回馈社区你的感激之情。

票数 8
EN

Stack Overflow用户

发布于 2014-02-23 18:03:25

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

代码语言:javascript
复制
com.example

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

代码语言:javascript
复制
com.example

问题解决了。我希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20708144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档