仅在次级活动中使用猴子(Android调试)
-
09-10-2019 - |
题
我正在尝试使用Monkey Debuggin工具(从ADB)进行压力测试 部分 我的申请。由于猴子以一种随机的方式行事,我希望它专注于可能包含我正在寻找的错误的代码部分(非常罕见的错误,我不知道如何复制它)。
因此,在我的主要活动中,我有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>
但这没用。猴子仍然会启动未经此标签分类的活动。猴子在选定的亚活性中工作至关重要,因为它在我的应用程序中浪费了大约95%的时间漫游,除了我实际上想测试的亚活性之外。
另外,我尝试了一些简单的脚本来启动所需的次级活动,但没有成功。
寻找任何帮助,
干杯,
Kajman
解决方案
我在用类别限制猴子时也有一些问题。我认为这并不是要像您假设的那样工作。那是如何工作的?我没有明确的想法,只是尝试一下。文档很差。
对于您的问题,您可以考虑以下方法
- 将您的亚活性放在一个子包下,并允许仅使用-P选项访问该子包
- 在您的代码中添加一些约束,以防止应用程序内部的导航。例如,将OnClickListeners设置为无需执行的操作或在满足某些特定条件时进行测试的活动按钮。
PS您可以使用 ADB Shell AM开始 为了开始所需的亚活动。同样,文档差,没有例子,但是动作是您在AndroidManifest中为活动中定义的动作的名称。名称是活动名称,例如
adb shell am start -a my.package.app.ACTION1 -n my.package.app/.sub.MyActivity
其他提示
我知道这很晚,但是这里更可靠 - 使用这样的代码:
ActivityManager activityManager;
activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
if(!activityManager.isUserAMonkey()) {
//stuff you want to execute anywhere but monkey test
});
不隶属于 StackOverflow