• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

NumberPicker-Espresso测试

Android rin, seun 7个月前 (07-06) 93次浏览 0个评论

在上一篇文章中,我们研究了在使用不受欢迎的NumberPicker小部件时可能遇到的一些问题。另一个可能需要技巧的地方NumberPicker是为它编写Espresso测试。在本文中,我们将介绍一些用于创建Espresso测试的技术NumberPicker

NumberPicker测试棘手的主要原因是它实际上是一个复合控件。实际组件将根据我们使用的是Material主题变体还是较旧的变体之一而变化。我假设大多数阅读此书的人将使用Material主题变体,因此讨论仅针对此。

NumberPicker具有子视图,该子视图EditText允许手动编辑数值。要获取的当前值,NumberPicker我们实际上可以检查text此控件的值。

让我们从一个简单的Espresso测试开始,该测试验证NumberPicker可见。

我创建了一个名为的实用程序方法onNumberPicker(),它提供了一个一致的View匹配器,我们将在测试中反复使用它。我假设大多数阅读此书的人都熟悉Espresso的基本知识,但对于那些不熟悉 Espresso的人,我建议您在进一步学习之前先熟悉一下。

在上一篇文章的示例应用程序中,我们创建了一个NumberPicker显示数字范围从0到10的数字,并进行了wrapSelectorWheel = true设置,一旦到达范围的末端,数字就会自动换行,因此我们得到了一个连续的无限循环从0到10的数字。我们没有设置默认值,因此我们希望它从0开始。我们应该测试此初始状态,因此我们需要一种验证当前值的方法。如前所述,有一个孩子EditText拥有一个文本值,我们可以很容易地对此进行匹配,而不需要了解它的父对象是我们的事实NumberPicker

此处的启动器与该onNumberPickerInput()函数几乎完全相同,onNumberPicker()除了它使用withParent匹配器查找以NumberPicker作为父视图的视图将为EditText。然后,我们可以验证其中是否包含预期的文本。

因此,我们有一种方法可以验证在中选择的当前值NumberPicker,但是我们还希望能够检查行为的其他方面,例如当用户点击控件的增量和减量区域时。通常,在Espresso中,我们使用click()视图操作来单击特定控件。这有点棘手,NumberPicker因为它具有执行不同操作的不同点击区域。点击顶部分隔线上方的将减少该值;在分隔线之间轻按将编辑子代的价值EditText; 然后点击底部分频器下方的会增加该值。

尽管NumberPicker对于这三个区域,每个区域的行为好像都有单独的控件,但是对于减量和增量区域却没有实际的视图,但根据NumberPicker触摸事件发生的位置,会执行不同的行为。该click()视图的动作将执行在控制中心的点击,所以这不允许我们进行的减量和增量领域的龙头。

如果我们查看视图操作源,click()我们可以看到它使用GeneralClickAction来在控件中间执行单击。我们可以复制它,并使用不同的GeneralLocation常量在NumberPicker视图范围内的另一点执行单击。对于减量,我们在顶部中心点执行此操作,对于增量,在底部中心点执行此操作:

为了简单起见,我将它们包含在测试类中,但是如果我在更复杂的测试套件中使用它们,则倾向于创建通用操作,而不是像此处将其嵌入测试类中一样。

有了这些之后,我们就可以对减量和增量行为进行进一步的检查:

其中的前两个测试基本的增量和减量行为,第三个测试回绕行为–如果当前值为,0并且点击了减量,则该值回绕为10。如果自动换行被禁用,则我们需要更改此测试以验证0单击减量后该值是否仍为。

尽管NumberPicker还支持滑动和长按交互,但这里的目的不是测试控件本身,而是测试我们配置控件的行为–支持的值范围和包装行为。为此,这些测试绰绰有余。如果在不更新测试以匹配的情况下更改数字范围或换行,则它们将失败。

尽管NumberPicker起初似乎很难为其创建Espresso测试,但是了解其解剖结构和内部行为使我们能够轻松地创建一些实用程序,使测试变得非常简单。

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址