阻止Android Monkey启动活动

时间:2018-11-28 15:31:10

标签: android testing monkey

我有一个要使用Android ADB Monkey Exerciser进行Monkey测试的应用程序。 我希望“猴子”在“项目”列表视图中乱七八糟,但阻止它进入付款/订单活动。我认为将活动类别中的猴子类别添加到付款/订单活动以外的所有活动就足够了。但是Monkey仍然设法将其单击进入“付款/订单活动”。

package参数可以正常工作,但Category参数不能正常工作。

  

-c主要类别

     

如果您以这种方式指定一个或多个类别,则Monkey将仅允许系统访问使用指定类别之一列出的活动。如果您未指定任何类别,则Monkey将选择类别为Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY列出的活动。要指定多个类别,请多次使用-c选项-每个类别一个-c选项。

https://developer.android.com/studio/test/monkey

这是我的“猴子”活动的典型外观。我的问题是,猴子允许没有猴子类别的活动开始。

<activity
    android:name=".activity.SomeActivity"
    android:parentActivityName=".activity.drawer.ParentActivity">
  <intent-filter>
    <category android:name="android.intent.category.MONKEY"/>
  </intent-filter>
</activity>

这是我的ADB命令通常的样子。

monkey -p <my.package.name> -c android.intent.category.MONKEY -v -v 200

在阅读Monkey源代码之后,我的理解是类别Monkey仅在Monkey尝试使用隐式意图启动Main Activity时才起作用,并且在应用程序在应用程序中启动显式意图时将忽略类别。 https://android.googlesource.com/platform/development/+/master/cmds/monkey/src/com/android/commands/monkey/Monkey.java


据我了解,-c main-category参数仅在意图过滤器中执行“ MAIN”操作时才有效。 而且我需要在应用程序中通过代码添加猴子用户检查,以防止它进入我的某些活动/片段:

基本活动

onCreate(){
     if(ActivityManager.isUserAMonkey() && !canMonkeyAroundHere()){
         quit()
     }
}

接口canMonkeyAroundHere()

Activity Impl
   override
     canMonkeyAroundHere(){
      return true;
    }

0 个答案:

没有答案