Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在安卓系统中通过Tag by Espresso捕捉视图?_Android_Android Espresso - Fatal编程技术网

Android 如何在安卓系统中通过Tag by Espresso捕捉视图?

Android 如何在安卓系统中通过Tag by Espresso捕捉视图?,android,android-espresso,Android,Android Espresso,我有一个扩展了线性布局的PinCodeView。在我的init()方法中有以下代码DigitEditText扩展了EditText,只接受一个数字。此视图将用于接收4位长的确认代码 private void init() { ... for (int i = 0; i < 4; i++) { DigitEditText digitView = getDigitInput(); digitView.setTag(R.id.etPinC

我有一个扩展了线性布局的
PinCodeView
。在我的
init()
方法中有以下代码
DigitEditText
扩展了
EditText
,只接受一个数字。此视图将用于接收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);
        ...
}
现在,在浓缩咖啡中,我想捕捉每个
DigitEditText
,并在其中放入一个数字。我怎么能做到?我知道有两种方法,
withTagKey()
withTagValue()
,但我不知道如何让它们发挥作用

我原以为这样做可能会奏效,但似乎无法将0分配到
with tagvalue()


我用这个把戏解决了我的问题。希望能为你节省一些时间

首先,我使用了
Id
而不是
tag

for (int i = 0; i < 4; i++)
    {
        DigitEditText digitView = getDigitInput();
        digitView.setId(R.id.etPinCodeView + i); // uses for Espresso testing
        digitView.setKeyEventCallback(this);
        ...
由于需要一个
org.hamcrest.Matcher
的实例作为参数,我们可以使用该方法创建一个简单的实例 要在expresso测试中查找带有特定标记的视图,请执行以下操作:

String tagValue = "lorem impsum";
ViewInteraction viewWithTagVI = onView(withTagValue(is((Object) tagValue)));

在应用程序的某个地方设置视图中的标记后,对于那些对Kotlin中的语法感到困惑的人:

withTagValue(`is`(EXPECTED_TAG))
在特定视图上断言标记的完整语法:

onView(
   allOf(
       withId(R.id.some_id),
       withTagValue(`is`(EXPECTED_TAG))
   )
)

简单:)

哪里有
可用,我找不到it@LavekushAgrawal,谢谢你的评论。我通过链接和更好的解释改进了我的答案。我需要:
onView(使用tagvalue(Matchers.`is`(object))
@hmac检查您导入的内容。这个答案符合你的需要。检查导入行如果文件缺少对
is
的访问,为什么在测试中使用withId(…)而不是withTagValue(…)的匹配器,同时在init()方法中设置标记setTag(…)?
String tagValue = "lorem impsum";
ViewInteraction viewWithTagVI = onView(withTagValue(is((Object) tagValue)));
withTagValue(`is`(EXPECTED_TAG))
onView(
   allOf(
       withId(R.id.some_id),
       withTagValue(`is`(EXPECTED_TAG))
   )
)