Как отфильтровать определенные действия, которые будут проверены обезьяной, используя 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"/>
Я не хочу, чтобы MySettings тестировался Monkey.
В моем реальном случае это происходит потому, что эта активность выполняет выход из системы. Таким образом, после выхода из системы нет возможности снова войти в систему, чтобы продолжить тестирование остальных экранов, что является основной идеей теста.
./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
..
Это должно быть отклонение вместо того, чтобы позволить мне угадать. Любая идея, как избежать обезьяны, чтобы заняться деятельностью, которую я не хочу?
1 ответ
Я справился с этим путем добавления следующего в onCreate(...) действий, которые вы не хотите проверять обезьяной:
if (ActivityManager.isUserAMonkey()) {
finish();
}
Таким образом, действие немедленно завершается, если его проверяет обезьяна.