我有一个 Java 库,它使用了 Android API 中的一些东西。我想使用 Mockito 为这个库编写单元测试。
我有办法解决这个问题吗?
Mockito 在 Dalvik VM 上运行不佳,请参阅这篇文章:将 Mockito 与 Android 虚拟机结合使用 http://code.google.com/p/mockito/issues/detail?id=57
UPDATE:
自从这篇文章之后,我发现了 Robolectric,并且有机会在 Pivotal Labs 工作并为这个库做出一些小贡献。我建议在 Android 测试框架/mockito 上使用它。此外,您可以自由使用 Robolectric 和 Mockito,但 Robolectric 中的阴影对象使得 Mockito 对于大多数用例来说是不必要的。
尝试对 Android 进行单元测试的问题是,您构建的 Android 库将每个方法都进行了存根处理,要么抛出存根异常,要么返回 null。如果你想测试你的应用程序并想要任何 Android 行为,那么你就不走运了,除非你使用 Robolectric,它会在类加载时动态重写字节码,并注入一个模拟行为的影子对象。
更新2:
已经有一段时间了,事情已经发生了变化。 Robolectric 中的许多 Shadow 类已被替换为真正的 Android 类。现在使用真正的 Android jar,Robolectric 只为一小部分内容加载 Shadow 类。这更是使用 Robolectric 进行 Android 测试的一个原因。
经过多次谷歌搜索后,我找到了这个问题的答案here http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html.
基本上它涉及使用机器人电动 http://robolectric.org/单元测试框架,拦截 Android 类的加载。然后,您可以继续使用 Mockito(尽管在大多数情况下没有必要)并在 JVM 上运行测试!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)