Мне интересно, возможно ли создать пользовательское сопоставление, которое может взять все указанные представления и сделать утверждение для этого массива или коллекции.
В качестве потенциального примера это будет выглядеть так:
onView(
(withAllIds(R.id.text_view1,R.id.text_view2, R.id.text_view3))).check(matches(isDisplayed())
Для clariy, вышеприведенное будет утверждать, что текстовые представления 1, 2 и 3 все отображаются.
Является ли это запахом кода или нет, мне любопытно услышать мысли и мнения. Я бы использовал это, чтобы сделать простое утверждение о том, что ожидаемые представления отображаются на уровне пользовательского интерфейса, и, возможно, соединить его с isCompletelyDisplayed()
, чтобы ничего не обрезалось. Написание тестов / утверждений по отдельности позволило бы упростить отладку в случае сбоя, но в наборе потребовалось бы больше времени, чтобы каждый тест выполнялся отдельно на CI.
При желании, есть ли лучший способ проверить эти простые утверждения вида? Стоит ли оно того?
Я обычно поклонник тестирования взаимодействия с приложением, например если приложение действительно что-то делает, пользовательский интерфейс обрабатывает это правильно, или если API возвращает ответ, то пользовательский интерфейс обрабатывает это правильно.
Но мне любопытно, можно ли использовать что-то вроде everyItem
примера Hamcrest для нескольких видов с Espresso.
Referencing:
http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/core/Every.html
![everyItem example from Hamcrest](https://i.stack.imgur.com/YEWWI.png)