在我看来,我从根本上误解了Robolectric的目的。我已经与它争斗了一个星期,到目前为止,获得新的错误消息被视为取得进展。我能够在一个活动中测试一些基本的东西,比如静态视图,但是当一些更复杂的东西发挥作用时,事情就会崩溃。我不得不扩展Robolectric以支持具有某些参数的第3方库,Appcompat操作栏和许多其他非常耗时的事情,并且在任何地方都没有真正记录,并且事情正在以相当快的速度发展。我开始认为我以错误的方式使用它,它根本不应该做我想做的事。
一般的应用程序逻辑非常简单,因此单元测试并不多,最复杂的是UI和远程API调用。 Robolectric是否应该让Android的单元测试比JUnit更少痛苦,因为它可以在JVM上运行并支持一些Android类?也许像Espresso这样的黑盒行为测试框架更适合我的需求?但是我们使用了连续集成,并且Robolectric很容易设置为在CI服务器上运行测试,我有点想保持这种方式。
你用什么Robolectric?很多博客文章推荐它用于“活动生命周期测试”,但由于我在Android世界中也很新,我真的不明白它的目的,特别是因为我正在测试的应用程序是仅限肖像的。有人可以概述您使用Robolectric的方法,以及如何使用,最好使用代码示例并解释为什么以及如何重要这些测试?
答案 0 :(得分:3)
我们将它用于:
我们不使用它(并且发现很难用于这些):
如果您正在寻找更多后者,也许Espresso / Robotium更适合您的需求。并且你绝对可以将这些作为CI管道的一部分运行,但是您需要花一些时间进行设置,或者与Appurify之类的东西进行集成。
如果您发现编写测试非常困难,那么应用程序的构建方式可能需要比使用robolectric的方式更多。在这里也可以看到我的答案,它可能会对您有所帮助:Writing Android acceptance tests with robolectric: how could it be done?