我正在尝试新的Android测试库Espresso。 当我尝试时:
有趣的测试(){
onView(
allOf(withId(R.id.edDeliveryAndCase),
childAtPosition(
childAtPosition(
withClassName(`is`("android.widget.LinearLayout")),
1),
0),
isDisplayed()))
.perform(click())
onView(
allOf(withId(R.id.edDeliveryAndCase),
childAtPosition(
childAtPosition(
withClassName(`is`("android.widget.LinearLayout")),
1),
0),
isDisplayed()))
.perform(typeText("08400043880000166775"), closeSoftKeyboard())
onView(
allOf(withId(R.id.edDeliveryAndCase), withText("08400043880000166775"),
childAtPosition(
childAtPosition(
withClassName(`is`("android.widget.LinearLayout")),
1),
0),
isDisplayed()))
.perform(pressImeActionButton())
onView(
allOf(withId(R.id.edPartNumber),
childAtPosition(childAtPosition(
withClassName(`is`("android.support.v7.widget.CardView")),
0),
0),
isDisplayed()))
.perform(typeText("NBL-004"), closeSoftKeyboard())
onView(
allOf(withId(R.id.edPartNumber), withText("NBL-004"),
childAtPosition(
childAtPosition(
withClassName(`is`("android.support.v7.widget.CardView")),
0),
0),
isDisplayed()))
.perform(pressImeActionButton())
onView(
allOf(withId(R.id.edAcceptQty),
childAtPosition(
childAtPosition(
withClassName(`is`("android.widget.LinearLayout")),
1),
0),
isDisplayed()))
.perform(replaceText("5"), closeSoftKeyboard())
onView(
allOf(withId(R.id.edAcceptQty), withText("5"),
childAtPosition(
childAtPosition(
withClassName(`is`("android.widget.LinearLayout")),
1),
0),
isDisplayed()))
.perform(pressImeActionButton())
}
private fun childAtPosition(
parentMatcher: Matcher<View>, position: Int): Matcher<View> {
return object : TypeSafeMatcher<View>() {
override fun describeTo(description: Description) {
description.appendText("Child at position $position in parent ")
parentMatcher.describeTo(description)
}
public override fun matchesSafely(view: View): Boolean {
val parent = view.parent
return (parent is ViewGroup && parentMatcher.matches(parent)
&& view == parent.getChildAt(position))
}
}
}
我得到一个错误:
android.support.test.espresso.NoMatchingViewException: 找不到层次结构中符合以下条件的视图: (其ID:com.unitedtractors.warehouse.dev:id/edPartNumber和Child的父级位置0,Child父级的位置0上,其类名称为: 是“ android.support.v7.widget.CardView”,并在屏幕上显示给用户)
有什么想法吗?