繁体   English   中英

仅在子活动中使用Monkey(android调试)

[英]Using Monkey in a subactivity only (android debugging)

我正在尝试使用Monkey debuggin工具(来自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仍然会激活未按此标记分类的活动。 猴子在选定的子活动中工作至关重要,因为在我实际想要测试的子活动之外,它浪费了大约95%的时间在我的应用程序中漫游。

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

寻求任何帮助,
干杯,
kajman

我知道它有点晚了但是这里的方法更加健壮 - 使用这样的代码:

ActivityManager activityManager;
activityManager =  (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

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

我在使用类别限制猴子时遇到了一些问题。 我认为它并不打算像你想象的那样工作。 怎么样呢? 我没有明确的想法,只是试验它。 文档很差。

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

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

PS你可以使用adb shell am start来启动所需的子活动。 同样糟糕的文档,没有示例,但操作是您在AndroidManifest中的活动的intent-filter中定义的操作的名称。 例如,名称是活动名称

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM