测试同事在进行Monkey的时候,运行到一个用户可能点击不到的应用,所以想到要设置一个黑名单。
添加的方法简要如下:
1、新建一个BAT脚本,模拟monkey指令测试music模块
adb root
adb wait-for-device
adb shell sleep 3
set /a m=60 set /a n=1
adb push blacklist.txt /data/local/tmp/
adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt -p com.android.music -v --throttle 300 -s %m% 20000000 >D:\monkey.txt
2、添加黑名单:在BAT脚本同级目录中创建blacklist.txt,并在目录中添加不想测试的模块的包名,可以添加多个,以换行进行分开,monkey解析是一行行来读的。
3、同理添加白名单,在BAT脚本同级目录中创建whitelist.txt
adb push whitelist.txt /data/local/tmp/
adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt -v --throttle 300 -s %m% 20000000 >D:\monkey.txt
黑名单、白名单、-p参数的区别:
白名单:只执行名名单中的apk;
黑名单:除了黑名单中以外的apk;
-p : 执行单一apk;
白名单如果只有一个模块的话,那与-p没多少区别,白名单可添加多个模块,使用方便些。
注:这三个参数是三选其中,是不可以同时设置的,原因是Monkey源码在进行解析的时候做了判断
/** * Load package blacklist or whitelist (if specified).
* * @return Returns false if any error occurs. */
private boolean loadPackageLists() {
if (((mPkgWhitelistFile != null) || (MonkeyUtils.getPackageFilter().hasValidPackages())) && (mPkgBlacklistFile != null)) {
Logger.err.println("** Error: you can not specify a package blacklist " + "together with a whitelist or individual packages (via -p).");
return false;
}