Различная загрузка из ресурсов приложения и ресурсов тестирования

Я пишу несколько тестов пользовательского интерфейса для приложения, над которым я работаю, и мне нужно переключить изображение на основе push-уведомления. Чтобы написать тест без push-уведомлений, я помещаю png-файл в каталог androidTest res, а затем загружаю его с помощью ContextCompat.getDrawable(), используя идентификатор ресурса из тестовых ресурсов. Я также загружаю то же изображение из ресурсов приложения, используя идентификатор из ресурсов приложения.

Вот код, который загружает ресурсы:

Drawable drawable1 = ContextCompat.getDrawable(setupRule.getActivity().getApplicationContext(), R.drawable.my_contact_pic);
Drawable drawable2 = ContextCompat.getDrawable(setupRule.getActivity().getApplicationContext(), com.mycompany.myapp.devenv.test.R.drawable.my_contact_pic);

drawable1 - это экземпляр BitmapDrawable, drawable2 - это экземпляр NinePatchDrawable. Поскольку базовый PNG для drawable2 является копией PNG для drawable1, я ожидал бы, что они оба будут BitmapDrawables, я могу обойти это, но хотел бы понять, почему это произойдет для использования в будущем.

1 ответ

Итак, я наконец понял, что для загрузки png из ресурсов androidTest необходимо указать InstrumentationRegister.getContext(), в противном случае он будет загружаться из ресурсов приложения. Было совпадением, что указанный мной идентификатор ресурса указывал на файл NinePatch.

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