Android:使用Robolectric和Mockito对Android应用程序进行单元测试

Chr*_*rry 12 android unit-testing mockito robolectric

我有一个Java库,它使用Android API中的一些东西.我想用Mockito为这个库编写单元测试.

我有办法解决这个问题吗?

Mockito在Dalvik VM上表现不佳,请看这篇文章:将Mockito与Android虚拟机配合使用

更新:

自从这篇文章发表以来,我发现了Robolectric,我有机会在Pivotal Labs工作,并为这个库做出了一些贡献.我建议在Android测试框架/ mockito上使用它.此外,您可以自由使用Robolectric和Mockito,但Robolectric中的阴影对象使得大多数用例都不需要Mockito.

尝试对Android进行单元测试的问题在于,您构建的Android库的每个方法都会被删除,要么抛出存根异常,要么返回null.如果你想测试你的应用并想要任何Android行为你运气不好,除非你使用Robolectric在类加载时动态重写字节码,并注入一个模拟行为的阴影对象.

更新2:

已经有一段时间了,情况发生了变化.Robolectric中的许多Shadow类已经被真正的Android类所取代.现在使用真正的Android jar并且Robolectric仅为更小的一组东西加载Shadow类.这是使用Robolectric进行Android测试的更多原因.

Chr*_*rry 9

多谷歌搜索后,我所遇到的一个答案这个在这里.

基本上它涉及使用Robolectric单元测试框架,它拦截Android类的加载.然后你可以继续使用Mockito(虽然在大多数情况下没有必要)并在JVM上运行你的测试!