📅  最后修改于: 2020-12-06 09:35:43             🧑  作者: Mango
如前所述,视图断言用于断言实际视图(使用视图匹配器找到)和预期视图是相同的。示例代码如下,
onView(withId(R.id.my_view)) .check(matches(withText("Hello")))
这里,
onView()返回与匹配视图相对应的ViewInteration对象。 ViewInteraction用于与匹配的视图进行交互。
withId(R.id.my_view)返回一个视图匹配器,该匹配器将与ID属性等于my_view的视图(实际)匹配。
withText(“ Hello”)还返回一个视图匹配器,该匹配器将与文本属性等于Hello的视图(预期)匹配。
check是一种接受ViewAssertion类型的参数并使用传入的ViewAssertion对象进行断言的方法。
matches(withText(“ Hello”))返回一个视图断言,它将真正断言实际视图(使用withId找到)和期望视图(使用withText找到)是相同的。
让我们学习espresso测试框架提供的断言视图对象的一些方法。
返回视图断言,该断言确保视图匹配器找不到任何匹配的视图。
onView(withText("Hello")) .check(doesNotExist());
在这里,测试用例确保没有带有Hello文本的视图。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并与目标视图匹配器匹配的视图匹配。
onView(withId(R.id.textView_hello)) .check(matches(withText("Hello World!")));
在这里,测试用例确保具有id R.id.textView_hello的视图存在并与带有文本Hello World!的目标视图匹配。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且与目标视图匹配器在底部对齐。
onView(withId(R.id.view)) .check(isBottomAlignedWith(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并将其与ID为R.id.target_view的视图底部对齐。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并完全位于目标视图匹配器上方。
onView(withId(R.id.view)) .check(isCompletelyAbove(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并将其完全定位在ID为R.id.target_view的视图之上
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且完全位于目标视图匹配器下方。
onView(withId(R.id.view)) .check(isCompletelyBelow(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并将其完全定位在ID为R.id.target_view的视图之下。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且完全位于目标视图匹配器的左侧。
onView(withId(R.id.view)) .check(isCompletelyLeftOf(withId(R.id.target_view)))
在此,测试用例确保存在ID为R.id.view的视图并将其完全定位在ID为R.id.target_view的视图的左侧
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且完全位于目标视图匹配器的右侧。
onView(withId(R.id.view)) .check(isCompletelyRightOf(withId(R.id.target_view)))
在此,测试用例确保存在具有ID R.id.view的视图并将其完全定位在具有ID R.id.target_view的视图的右侧。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且与目标视图匹配器保持对齐。
onView(withId(R.id.view)) .check(isLeftAlignedWith(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并将其与ID为R.id.target_view的视图对齐
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且部分位于目标视图匹配器上方。
onView(withId(R.id.view)) .check(isPartiallyAbove(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并将其部分定位在ID为R.id.target_view的视图上方
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且部分位于目标视图匹配器下方。
onView(withId(R.id.view)) .check(isPartiallyBelow(withId(R.id.target_view)))
在此,测试用例可确保存在ID为R.id.view的视图并将其部分定位在ID为R.id.target_view的视图下方。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且位于目标视图匹配器的部分左侧。
onView(withId(R.id.view)) .check(isPartiallyLeftOf(withId(R.id.target_view)))
在此,测试用例可确保存在ID为R.id.view的视图并将其部分定位在ID为R.id.target_view的视图的左侧。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且部分位于目标视图匹配器的右侧
onView(withId(R.id.view)) .check(isPartiallyRightOf(withId(R.id.target_view)))
在此,测试用例可确保存在具有ID R.id.view的视图并将其部分定位在具有ID R.id.target_view的视图的右侧。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且与目标视图匹配器正确对齐。
onView(withId(R.id.view)) .check(isRightAlignedWith(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并与ID为R.id.target_view的视图正确对齐。
接受目标视图匹配器并返回视图断言,以确保视图匹配器(实际)存在并且与目标视图匹配器在顶部对齐。
onView(withId(R.id.view)) .check(isTopAlignedWith(withId(R.id.target_view)))
在这里,测试用例确保存在ID为R.id.view的视图并与ID为R.id.target_view的视图顶部对齐
返回一个视图断言,以确保视图层次结构不包含椭圆形或截断的文本视图。
onView(withId(R.id.view)) .check(noEllipsizedText());
返回视图断言,以确保视图层次结构不包含多行按钮。
onView(withId(R.id.view)) .check(noMultilineButtons());
返回一个视图断言,以确保可分配给TextView或ImageView的后代对象不会相互重叠。它具有另一个选项,该选项接受目标视图匹配器并返回视图断言,以确保与目标视图匹配的后代视图不重叠。