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))
)
)