0

基本的に、製造中のデバイスのストレス/機能テストを実行するためのアプリケーションを開発しています。

アプリケーションは、.log ファイルを生成して UI テストについて通知できるように、Monkey Tool の動作が完了するまで待機する必要があります。一般的に問題はありませんが、Monkey Tool がテストを終了したかどうかを知る必要があります。

ここで主なドキュメントを確認しました: Monkey Android Documentation

また、Monkey のソース コードを調べる時間もありました。例 1 は次のとおりです。Monkey.java

残念ながら、Monkey が作業を終了する瞬間を検出する手がかりは見つかりませんでした。

したがって、本当の質問は次のとおりです。

Monkey Tool が UI のテストを終了したときに情報を検出または取得する方法はありますか?

- -[編集] - -

シェルを使用して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 に答える