【问题标题】:Using Monkey in a subactivity only (android debugging)仅在子活动中使用 Monkey(android 调试)
【发布时间】:2011-01-11 15:07:06
【问题描述】:

我正在尝试使用 Monkey 调试工具(来自 adb)对我的应用程序的 部分 进行压力测试。 由于 Monkey 以完全随机的方式行事,我希望它专注于可能包含我正在寻找的错误的代码部分(非常罕见的错误,我不知道如何复制它)。

因此,在我的主要活动中,我有 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>

但它没有用。 Monkey 仍然会启动未按此标签分类的活动。 Monkey 在选定的子活动中工作至关重要,因为它浪费了大约 95% 的时间在我的应用程序中漫游,而不是我真正想要测试的子活动。

我也尝试了一些简单的脚本来启动所需的子活动,但没有成功。

寻求帮助,
干杯,
卡曼

【问题讨论】:

    标签: android categories intentfilter subactivity monkey


    【解决方案1】:

    我在用类别约束猴子时也遇到了一些问题。我认为它并不像你想象的那样工作。那么它是如何工作的呢?我没有明确的想法,只是尝试一下。文档很差。

    对于您的问题,您可以考虑以下方法

    1. 将您的子活动放在一个子包下,并使用 -p 选项仅允许访问该子包
    2. 向您的代码添加一些约束,以防止在应用程序内导航。例如,当满足某些特定条件时,将 onClickListeners 设置为不执行任何操作或禁用被测活动的后退按钮。

    附:您可以使用adb shell am start 来启动所需的子活动。同样糟糕的文档,没有示例,但操作是您在意图过滤器中为 AndroidManifest 中的活动定义的操作的名称。 Name为Activity名称,例如

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

    【讨论】:

      【解决方案2】:

      我知道这有点晚了,但这里有更强大的方法 - 使用这样的代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-10
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多