2011-01-11 6 views
4

Я пытаюсь использовать инструмент отладки обезьяны (от adb) до стресс-теста часть моей заявки. Как обезьяна действует в общем случайном порядке, я хотел бы, чтобы она сосредоточилась на части кода, которая может содержать ошибку, которую я ищу (очень редкая ошибка, и я не знаю, как ее реплицировать).Использование Monkey только в субзависимости (отладка от android)

Итак, в моей основной деятельности у меня есть 6 кнопок, каждый из которых запускает новое действие. Я бы хотел, чтобы обезьяна выглядела только в одном из этих видов деятельности, и всякая деятельность, доступная от нее. Я не могу найти разумный способ сделать это.

Я попытался
adb shell monkey -p my.package.name -c android.intent.category.MONKEY 1000
и в моем файле манифеста я поместил в некоторых видах деятельности, что я заинтересован в:

 <intent-filter> 
      <category android:name="android.intent.category.MONKEY"/>     
     </intent-filter> 

Но это не сработало. Обезьяна все еще запускает действия, которые не классифицируются по этому тегу. Крайне важно, чтобы обезьяна работала в выбранных субактивности, потому что она тратит около 95% времени на роуминг через мое приложение, за пределами субактивов, которые я действительно хочу проверить.

Также я пробовал простой скрипт для запуска желаемой субактивности, но без успеха.

Ищу любую помощь,
веселит,
kajman

ответ

1

Я также имел немного проблем с сдерживая обезьяну с категориями. Я думаю, что он не предназначен для работы, как вы предполагаете. Как это работает? У меня нет четкой идеи, просто экспериментируйте с ней. Документация довольно плохая.

Для вашей проблемы вы могли бы рассмотреть следующие подходы

  1. Положите subactivities под одним подпакетом и разрешать доступ только к тому подпакету с опцией -p
  2. Добавьте некоторые ограничения в код, который предотвращает навигацию внутри приложения. Например, установите onClickListeners, чтобы ничего не делать или отключить кнопку возврата для тестируемой активности, когда выполняется определенное условие.

P.S. Вы можете использовать adb shell am start, чтобы начать желаемую активность. Снова плохая документация, нет примера, но действие - это имя действия, которое вы определили внутри фильтра намерения для активности в вашем AndroidManifest. Имя это имя деятельности, например

adb shell am start -a my.package.app.ACTION1 -n my.package.app/.sub.MyActivity 
1

Я знаю, что это немного поздно, но здесь более надежный способ - использовать такой код:

ActivityManager activityManager; 
activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 

if(!activityManager.isUserAMonkey()) { 
    //stuff you want to execute anywhere but monkey test 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^