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

Я пытаюсь провести стресс-тестирование своего приложения для Android с помощью инструмента обезьяньи упражнения.

По умолчанию инструмент выполняет действия категории Intent.CATEGORY_LAUNCHER или Intent.CATEGORY_MONKEY в соответствии с документом

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"/>

Я не хочу, чтобы Monkey тестировала 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
..

Думаю, это должно быть отклонение, а не разрешение. Любая идея, как избежать обезьяны, чтобы заняться действиями, которые я не хочу?


person felipe    schedule 23.04.2012    source источник
comment
Вы пытались использовать -c, чтобы указать, какие пакеты вы хотите? Может случиться так, что значения по умолчанию не работают, но указание их самостоятельно (даже если, в конце концов, значения совпадают со значениями по умолчанию) работает. Если это не помогает, это похоже либо на ошибку документации, либо на monkey ошибку кодирования.   -  person CommonsWare    schedule 23.04.2012
comment
Да -c android.intent.category.LAUNCHER -c android.intent.category.MONKEY но точно такой же результат. Я также пытался использовать другую категорию android.intent.category.TEST только в модулях, на которых хотел сосредоточиться (я добавил в манифест и также использовал параметр -c), но снова тот же результат :(   -  person felipe    schedule 23.04.2012
comment
Вы когда-нибудь находили решение этой проблемы? Та же проблема здесь   -  person ben    schedule 05.01.2013


Ответы (1)


Я справился с этим, добавив в onCreate(...) действия, которые вы не хотите, чтобы обезьяна тестировала:

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

Таким образом, активность немедленно завершается, если ее тестирует обезьяна.

person Brandon    schedule 20.01.2013