用robolectric编写Android验收测试:怎么办呢?

CL2*_*L22 2 android robolectric

可以使用Robolectric编写Android验收测试吗?它似乎只被归类为单元测试框架.

为什么它不能被归类为接受或"端到端"测试框架?(可以为此目的进行调整吗?)

Ale*_*scu 11

我认为这可能有点主观,但我觉得这是可以回答的,所以这是我的看法.

它是一个e2e测试框架吗?

它不能是"端到端",因为应用程序实际上并不在设备上运行,依赖关系可能被模拟,网络通常被模拟,测试无法模拟用户如何使用应用程序.生命周期由您在测试中进行模拟和控制.它甚至没有在dalvik-VM上运行,并且dalvik和JVM之间存在差异(这里是一个简单但相关的例子:英国夏令时--BST不被SimpleDateFormat时区识别)

对我来说,端到端测试只能通过部署的应用程序,使用网络,连接到所需的服务器,获取信息,在屏幕上正确显示以及验证屏幕上可以看到的内容来实现.同样,这可能是主观的,但这就是e2e对我意味着什么.

它可以用来写验收测试吗?

这取决于你对验收测试的要求,因为我看到人们使用这个术语的方式不同,但我会说答案肯定是肯定的.我们使用robolectric来测试我们的大多数业务逻辑,因为我们发现UI测试不可靠.

您可以使用正确的数据实例化UI元素,与UI元素交互,检查它们在屏幕上显示的内容.我想说这涵盖了很多方面.

也就是说,有时候这些测试很难编写,而且我们在编写代码时遇到了很多不同的问题(模型 - 视图 - 演示者最常被建议)对我们来说关键是要有相当"愚蠢"的观点,并且让演示者确定将在屏幕上显示的内容.然后你用robolectric测试对这个演示者进行了大量测试,你绝对可以编写"给定这一系列输入的类型测试,我期望在屏幕上看到这些输出".测试视图进一步增加了价值,因为它只是演示者为其提供服务的shell.

我认为描述如何将MVP应用于您的项目超出了SO答案的范围,但我希望这会有所帮助.