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

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

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

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


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


Ответы (1)


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

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

person Gudin    schedule 09.04.2019