android - Espresso 嵌套 ScrollView

标签 android android-testing android-espresso

我正在尝试在 NestedScrollView 中测试表单中的 EditText。我正在运行以下代码:

onView(withId(R.id.register_scroll_view)).perform(scrollTo()).perform(click());

register_scroll_view 是我的 NestedScrollView。但是,我遇到了一个异常(exception):

android.support.test.espresso.PerformException: Error performing 'scroll to' on view 'with id: com.eazyigz.myapp:id/register_scroll_view'. Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: (view has effective visibility=VISIBLE and is descendant of a: (is assignable from class: class android.widget.ScrollView or is assignable from class: class android.widget.HorizontalScrollView))

如何正确设计此测试,以便我可以测试需要滚动到可见的 EditText?

最佳答案

我没有任何使用 NestedScrollView 的经验,但看起来 requestRectangleOnScreen()( Espresso 在常规 ScrollView 中的滚动方式)应该与 NestedScrollView 一样工作。

唯一的问题是 ScrollView 约束被硬编码到 scrollTo() 操作中,而 NestedScrollView 不继承常规 ScrollView。

我相信这里唯一的解决方案是复制并粘贴整个 ScrollToAction类到您自己的此操作的实现中并替换讨厌的约束。

关于android - Espresso 嵌套 ScrollView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31614937/

相关文章:

mocking - robolectric 3.0 Mockito -- 如何在事件中模拟类

android - Espresso - 检查 RecyclerView 商品的订购是否正确

android - 检查 android raw 文件的 uri

Android:如何将 Activity 标签居中

安卓 Kotlin : Mocking a free function using Mockito/PowerMock

android - 片状 Espresso 测试

android - 使用 “hasBackground” 进行 Espresso 测试

android - 如何在 Android 中获取 Stacked Notifications 的文本

android - 启用安卓 :forceDarkMode programmatically?

android - 对 Android Gradle 中的 testCompile 和 androidTestCompile 感到困惑