Доступ к ресурсам контрольно-измерительных приборов - PullRequest
19 голосов
/ 07 марта 2011

Я пытаюсь найти способ для моих инструментальных тестов иметь доступ к строковым ресурсам, сгенерированным в тестовом пакете.

Подробнее:

У меня есть тестовый пример Android, который наследуется от ActivityInstrumentationTestCase2.Я использовал Eclipse New Android Test Project, чтобы создать тест.У тестового проекта есть ресурсы (аналогичные ресурсам для обычного проекта Android).Я пытаюсь найти способ программного доступа к ресурсам String в тестовом проекте в различных отдельных тестах.Я пытался:

String s = getInstrumentation().getContext().getString(R.string.blah);

и

String s = mActivity.getApplicationContext().getString(R.string.blah);

Оба метода генерируют исключение NotFoundException.У меня есть строка "бла", определенная в моем strings.xml.R в приведенном выше коде - это импорт из моего тестового пакета, а не из пакета тестируемого приложения.Я могу получить доступ к ресурсам, определенным в пакете приложения с последним вызовом.

Было бы полезно выяснить способ доступа к определенным XML-строковым ресурсам в моих тестах (поскольку я хочу избежать ввода строк в код).Что я делаю не так?

Ответы [ 3 ]

25 голосов
/ 04 августа 2011

Даже если этот пост больше не актуален - это дополнение может кому-то помочь:

Чтобы понять, как это работает, вы должны помнить, что контекст, в котором живут ваши инструменты, отличается от контекстаприложение, с которым вы запускаете свой тест.Как вы правильно сказали, вы не можете получить доступ к ресурсам вашей цели из контекста инстанции.Вы можете определить некоторые для своего контекста инструментария в отдельном xml-файле внутри тестового проекта, или - если вы хотите использовать предопределенные ресурсы - вы можете получить их следующим образом:

 Resources res = getInstrumentation().getTargetContext().getResources();
 res.getString(R.string.xxx); // get a string resource

Никонтекст инструментария (как писал Вуджун) и целевой контекст недоступны до тех пор, пока построение тестового набора не будет полностью завершено.

3 голосов
/ 01 августа 2011

Я пытался:

String s = getInstrumentation().getContext().getString(com.myProject.test.R.string.blah);

, где com.myProject - это пакет проекта для тестирования, а com.myProject.test - это пакет проекта для тестирования.

Это сработало для меня, если я поместил код внутри setup(). Это не сработает, если я помещу его в конструктор.

1 голос
/ 21 июля 2011

Я думаю, что это невозможно без сохранения файлов ресурсов в другом месте, но вы можете использовать что-то вроде Robotium , где вы просто используете Solo.getString () и получаете свой ресурс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...