Monkey 的基本用法:
可以通过开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上
adb shell来达到目的,也可以进入Shell后直接输入Monkey命令。基本语法如下:
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500
个伪随机事件:
$ adb shell monkey -p packageName -v 500
说明:
-p
后为包名,一个-p后接一个包名,多个包需要多个-p;-v反馈信息的级别
Monkey命令选项参考:
1.--throttle <milliseconds> 在事件之间插入固定延迟。
通过这个选项可以减缓 Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。
2.-c:
如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选项只能用于一个类别.
3.-ignore-crash:
当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成.
4.-ignore-timeouts:
通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成.
5.-ignore-security-exceptions:
通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成
6.-monitor-native-crashes:
监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行
7.-kill-process-after-error:
如果程序出现错误,monkey将结束此程序进程
8.-v
将增加反馈信息的级别。
Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。
Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。
Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity
Monkey实例:
#!/bin/bash
echo "Random monkey test begin!!"
package_name=$1
event_count=$2
loop_count=$3
# Check commandline
if [ $# -ne 3 ]; then
echo "Usage: $0 <package_name> <event_count> <loop_count>";
exit 1
fi
########################################
echo "the package_name is: $1";
echo "the event_count is: $2";
########################################
cnt=0
while [ "$cnt" -lt "$loop_count" ]
do
cnt=$(($cnt+1))
echo "========================Interation[$cnt]========================"
monkey -p $1 --throttle 800 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes -v $2
done
echo "Sucessful testing of monkey test for($1) done $3 times.";
exit 0;