前一直都是在使用monkey,没有仔细研究过其中的实现细节,最近偶然一个机会,需要阅读monkey的代码,就整体看了一下,有些所得,这里写出来分享一下。
首先monkey的代码的位置:
development\comds\monkey\src\commands\monkey
该目录下面有26个java文件,这些文件中最重要的两个文件是Monkey.java,和MonkeySourceRandom.java,Monkey.java是monkey启动的入口,主要功能是解析命令行参数,monkey支持很多的功能,这个入口文件提供了很多的方法来最测试之前的准备工作。MonkeySourceRandomScript.java则是生成一个eventlist,monkey运行是会顺序调用这个list中的event。
执行的主体架构就是这个样子的了,在命令行启动的时候会先分析命令行给定的参数,这里不再敷述monkey的参数说明了,尽管很多,但是帮助说的还是很清楚的。解析参数的结果决定响应的标志位变量。
在这之后,会有三项检查,分别是checkInternalConfiguration(目前还没有实现),getSystemInterfaces,获取windowsmanager,activityManage及packagemanager的service,如果获取不到,就返回失败,结束测试。getMainApps,产生一个可以被切换到前台的activity的list。
生成一个随机事件的数组,然后调用runMonkeyCycles开始顺次发送event事件