我正在开发一个应用程序,它基本上是为正在生产的设备执行压力/功能测试。
应用程序应该等到Monkey Tool完成工作,以便它可以生成.log文件并通知UI测试。 我一般没有麻烦,但我需要知道Monkey Tool是否已完成测试。
我在这里查看了主要文档:Monkey Android Documentation。
我也有时间看看Monkey源代码。一个例子是:Monkey.java
不幸的是,我无法找到关于检测猴子完成工作的那一刻的任何线索。
所以真正的问题是:
当Monkey Tool完成对UI的测试时,有没有办法检测或获取信息?
--- [编辑] ---
通过使用shell检查运行Monkey进程并从BufferedReader读取输出,我尝试了一个业余解决方案。它有效,但由于它不是最佳解决方案,如果存在,我仍在等待更专业的答案。提前谢谢。
这是我尝试过的代码:
boolean is_monkey_running = true;
while(is_monkey_running) {
try {
//checking process state
Process process = Runtime.getRuntime().exec("ps");
BufferedReader buffered_reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log = new StringBuilder();
String line = "";
while ((line = buffered_reader.readLine()) != null) {
log.append(line);
}
if (log.indexOf("com.android.commands.monkey") == -1) {
//Monkey process has been finished.
Log.i("AATS", GET_DATE_AND_TIME() + "Monkey has finished testing.");
is_monkey_running = false;
}
else {
//Monkey is still running.
WAIT_N_MILISECONDS(1000);
}
}
catch (IOException e) {
}
}
答案 0 :(得分:1)
奥莱特。我想这是迄今为止我尝试过的最佳解决方案。发布它可能会帮助任何有兴趣的人。仍然可以获得更清晰的答案。
以下是代码:
//example String monkey_options = "--ignore-crashes --throttle 500 -v 500";
try {
Process monkey_process = new ProcessBuilder().command("monkey", monkey_options).start();
monkey_process.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
修改强> 您的应用程序必须作为系统apk运行才能在应用程序中调用monkey进程