0

我正在开发一个应用程序,它基本上是关于对正在生产的设备执行压力/功能测试。

应用程序应该等到 Monkey Tool 完成工作,以便它可以生成一个 .log 文件并通知 UI 测试。我一般没有问题,但我需要知道 Monkey Tool 是否完成了测试。

我在这里检查了主要文档:Monkey Android Documentation

我也有时间看猴子源代码。一个例子是: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) {
        }
    }
4

1 回答 1

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 运行才能在应用程序中调用猴子进程

于 2015-07-01T07:58:10.630 回答