You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Espresso提示Unresolved reference: atPosition 是否缺少Gradle依赖?

你没有缺少必要的Gradle依赖,atPosition 并非Espresso官方提供的内置API,是Android测试社区广泛使用的自定义工具方法,你需要自行将该方法添加到你的测试工具类中即可正常使用。

以下是两种语言的标准实现:

Kotlin 版本

fun atPosition(position: Int, itemMatcher: Matcher<View>): Matcher<View> {
    return object : TypeSafeMatcher<View>() {
        override fun matchesSafely(view: View): Boolean {
            val recyclerView = view as RecyclerView
            val viewHolder = recyclerView.findViewHolderForAdapterPosition(position)
                ?: return false
            return itemMatcher.matches(viewHolder.itemView)
        }

        override fun describeTo(description: Description) {
            description.appendText("has item at position $position: ")
            itemMatcher.describeTo(description)
        }
    }
}

Java 版本

public static Matcher<View> atPosition(final int position, @NonNull final Matcher<View> itemMatcher) {
    return new TypeSafeMatcher<View>() {
        @Override
        public void describeTo(Description description) {
            description.appendText("has item at position " + position + ": ");
            itemMatcher.describeTo(description);
        }

        @Override
        protected boolean matchesSafely(View view) {
            if (!(view instanceof RecyclerView)) {
                return false;
            }
            RecyclerView recyclerView = (RecyclerView) view;
            RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position);
            return viewHolder != null && itemMatcher.matches(viewHolder.itemView);
        }
    };
}

注意事项

  • 将上述方法放入你项目的公共测试工具类中,使用时直接导入对应方法即可正常调用
  • 如果你的RecyclerView使用StaggeredGridLayoutManager等自定义布局管理器,可根据需求将findViewHolderForAdapterPosition替换为findViewHolderForLayoutPosition适配场景

内容的提问来源于stack exchange,提问作者Casey Perkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:36:07