Android, Robotium - Как работать с локализованными сборками? - PullRequest
1 голос
/ 14 марта 2012

Я использую Robotium для автоматизации тестирования приложений Android. Это здорово, но обслуживание огромно.

Мое приложение локализовано на 20 языков, я собираю строковые ресурсы моего приложения в свой тестовый APK (который содержит логику для запуска моих автоматических тестов) и использую строки для поиска пунктов меню и т. Д., Которые можно щелкать во время выполнения. Это соответствует примеру, который я нашел на странице проекта Robotium в Google Code.

Например,

solo.clickOnText(res.getString(R.string.settings_menu));

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

Можно ли каким-либо образом использовать идентификаторы строк в отличие от реальных строк, чтобы нажимать на элементы? Они будут уникальными для всех языков, и у меня не будет высоких затрат на обслуживание, которые у меня есть в настоящее время.

ТИА.

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Вы можете использовать идентификаторы ресурсов представлений, с которыми вы хотите взаимодействовать.Пример:

Button button = (Button) solo.getView(R.id.x);
solo.clickOnView(button);
1 голос
/ 15 марта 2012

Вы должны быть в состоянии использовать

String myLocalizedString = getActivity().getResources().getString(R.string.settings_menu);
solo.clickOnText(myLocalizedString);

Независимо от того, на каком языке вы меняете язык, он должен найти правильную строку. Я предполагаю, что вы используете квалификатор ресурса .

res
  values
    strings.xml
  values-fr
    strings.xml
0 голосов
/ 25 сентября 2013

Используйте идентификатор ресурса из тестируемого тестируемого проекта (если вы тестируете только APK, импортируйте R.java в свой тестовый проект).

Затем используйте сценарии, как показано ниже:

View view = solo.getCurrentActivity().findViewById(R.id.resourceId);
solo.clickOnView(view);
...