2012-04-23 5 views
11

Я пытаюсь подчеркнуть тест моего приложения для Android, используя упражнение обезьяны инструмент.как фильтровать конкретные действия, которые будут проверяться обезьяной с помощью android.intent.category?

По умолчанию инструмента будет осуществлять деятельность, имеющую категорию Intent.CATEGORY_LAUNCHER или Intent.CATEGORY_MONKEY согласно the doc.

package="my.android" 

    <activity android:name=".activities.MyApp"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity>   
    <activity android:name=".activities.MyScreen"> 
     <intent-filter> 
      <category android:name="android.intent.category.MONKEY"/> 
     </intent-filter> 
    </activity> 
    <activity android:name=".activities.MySettings"/> 

Я не хочу MySettings быть проверены от обезьяны.

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

./adb shell monkey -p my.android -v 500 
:Monkey: seed=0 count=500 
:AllowPackage: my.android 
:IncludeCategory: android.intent.category.LAUNCHER 
:IncludeCategory: android.intent.category.MONKEY 
.. 
    // Allowing start of Intent { cmp=my.android/.activities.MySettings} in package my.android 
.. 

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

+0

Вы пытались использовать '-c', чтобы указать, какие пакеты вы хотите? Может случиться так, что значения по умолчанию не работают, но сами их указывать (даже если в конце значения совпадают с значениями по умолчанию). Если это не помогает, это похоже на ошибку в документации или на ошибку «обезьяны». – CommonsWare

+0

Да '-c android.intent.category.LAUNCHER -c android.intent.category.MONKEY', но точно такой же результат. Я также попытался использовать другую категорию 'android.intent.category.TEST' в модулях, которые я хотел только сфокусировать (я добавил в манифест, и я тоже использовал параметр -c), но опять же, тот же результат :( – felipe

+0

Вы когда-либо найти решение этой проблемы? Такая же проблема здесь – ben

ответ

4

Как я уже обработано это, добавив следующее в OnCreate (...) из мероприятий, которые вы не хотите обезьяны к испытанию:

if (ActivityManager.isUserAMonkey()) { finish(); }

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

+0

работает для меня. :) –