Инструментальный тест не соответствует идентификаторам представления из иерархии

Короче говоря, я пытаюсь сопоставить представление с идентификатором, например R.id.signCheckbox, используя эспрессо. Когда я пытаюсь сопоставить это представление, я получаю исключение NoMatchingView, когда становится ясно, что представление присутствует.

После некоторой отладки я обнаружил, что внутри моего тестового класса при оценке R.id.signCheckbox я получу ID: -1000984. Внутри cause из NoMatchingViewException вы можете прочитать всю иерархию представлений в каком-то формате. Там я обнаружил, что у флажка другой идентификатор 2131362821. Я прочитал проект R.java, и он также присваивает 2131362821R.id.signCheckbox.

Поэтому, когда я сопоставляю withId(2131362821), это действительно работает. Почему не работает с R.id.signCheckbox и откуда берется этот -1000984 id?

Можете ли вы убедиться, что ваш import com.yourapp.pkg.R;ЯВЛЯЕТСЯ тот, который вы импортируете/хотите импортировать? Файл R.java является статическим и не может изменить идентификатор волей-неволей AFAIK.

Rakib 09.04.2019 11:14
0
1
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, старый добрый Invalidate/Restart/Clean/Rebuild решил проблему.

Идентификаторы по-прежнему отрицательные (например, -1000984), не соответствующие идентификаторам R.java, но Espresso будет успешно соответствовать представлениям.

Другие вопросы по теме