Как написать тестовый пример Android, который охватывает более двух приложений

Согласно документу Robotium, мы не можем написать тестовый пример, охватывающий два приложения, в нем говорится: «Тестовый проект привязан к целевому пакету. Выход за пределы этого целевого пакета не разрешен платформой Android. Поэтому вам понадобятся 2 тестовых проекта, один для каждого приложения».

В настоящее время то, что я хочу сделать, похоже на инструмент для обезьян. Я хочу случайным образом запускать действия на экране, чтобы полностью запустить функцию приложения. В процессе обхода поток программы иногда выходит за пределы приложения, и тогда JUnit или Robotium теряют контроль над программой. Я хочу знать, есть ли способ, которым я могу направить поток программы обратно в приложение? Или есть ли способ, которым я могу управлять несколькими приложениями одновременно?

Спасибо!


person Wei Yang    schedule 14.11.2012    source источник


Ответы (2)


Одна простая вещь, которую можно сделать, написав простое приложение, которое получает доступ к диспетчеру действий и считывает каждые 2 секунды, что активно в качестве внешней службы в вашем приложении или другом приложении в целом.

http://developer.android.com/reference/android/app/ActivityManager.html

По сути, убедитесь, что ActivityManager.RecentTaskInfo() и убедитесь, что компонент Activity, с которого он был запущен, является тем, с которым у вас все в порядке. Затем, чтобы это не повлияло на вашего обычного пользователя, .isUserAMonkey() верните логическое значение true.

Если действие не то, что вы хотите, напишите:

else
startService(new Intent(this, TheService.class));

or

else 
startActivity(new Intent(this, TheActivity.class)); 
person childofthehorn    schedule 14.11.2012

Если вы хотите проводить тестирование только на Android 4.1 и более поздних версиях, вы можете использовать новую платформу UI Automator, которая поддерживает тестирование нескольких пакетов.

Немного информации:
https://plus.google.com/103712615773524578393/posts/dzqtF7BYyG4

person Christopher Orr    schedule 15.11.2012