Короче говоря, я пытаюсь сопоставить представление с идентификатором, например R.id.signCheckbox
, используя эспрессо. Когда я пытаюсь сопоставить это представление, я получаю исключение NoMatchingView, когда становится ясно, что представление присутствует.
После некоторой отладки я обнаружил, что внутри моего тестового класса при оценке R.id.signCheckbox
я получу ID: -1000984
. Внутри cause
из NoMatchingViewException
вы можете прочитать всю иерархию представлений в каком-то формате. Там я обнаружил, что у флажка другой идентификатор 2131362821
. Я прочитал проект R.java
, и он также присваивает 2131362821
R.id.signCheckbox
.
Поэтому, когда я сопоставляю withId(2131362821)
, это действительно работает. Почему не работает с R.id.signCheckbox
и откуда берется этот -1000984
id?
Похоже, старый добрый Invalidate/Restart/Clean/Rebuild решил проблему.
Идентификаторы по-прежнему отрицательные (например, -1000984), не соответствующие идентификаторам R.java, но Espresso будет успешно соответствовать представлениям.
Можете ли вы убедиться, что ваш
import com.yourapp.pkg.R;
ЯВЛЯЕТСЯ тот, который вы импортируете/хотите импортировать? Файл R.java является статическим и не может изменить идентификатор волей-неволей AFAIK.