我有一个PinCodeView
扩展了LinearLayout
。我的init()
方法中有以下代码。 DigitEditText
扩展了EditText
,仅接受一位数字。此 View 将用于接收长4位数字的确认代码。
private void init()
{
...
for (int i = 0; i < 4; i++)
{
DigitEditText digitView = getDigitInput();
digitView.setTag(R.id.etPinCodeView, i); // uses for Espresso testing
digitView.setKeyEventCallback(this);
...
}
我创建了
res/values/ids.xml
,这是它的内容:<resources>
<item name="etPinCodeView" type="id"/>
</resources>
现在,在Espresso中,我想捕获每个
DigitEditText
并在其中放入一个数字。我该怎么做?我看到有两种方法,withTagKey()
和withTagValue()
,但我不知道如何使它们生效。我以为这样的事情可能会起作用,但似乎我无法将0分配给
withTagValue()
。onView(allOf(withTagKey(R.id.etPinCodeView), withTagValue(matches(0)))).perform(typeText("2"));
最佳答案
由于 withTagValue
需要org.hamcrest.Matcher
的实例作为参数,因此我们可以使用 Matcher.is
方法创建一个简单的实例
在表情测试中查找带有特定标签的 View :
String tagValue = "lorem impsum";
ViewInteraction viewWithTagVI = onView(withTagValue(is((Object) tagValue)));