почему процесс дает нулевой входной поток в классе запуска тестов?

В моем тестовом проекте Android я просто прочитал logcat, используя adb command

как,

public StringBuilder log=new StringBuilder();
    public String line="";
    public String temp="";

public void testSolo() throws Exception {

             String baseCommand = "logcat -v time";
            baseCommand += " ActivityManager:I "; // Info for my app
            baseCommand += " *:S "; // Silence others

            try {
                  Process logReaderProcess = Runtime.getRuntime().exec(baseCommand);
                  BufferedReader bufferedReader = new BufferedReader(
                   new InputStreamReader(logReaderProcess.getInputStream()));

                   while ((line =bufferedReader.readLine()) != null) {
                            log.append(line); // here readLine() returns null
                          }

            }
            catch (IOException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                    }

 }

но здесь, в string line, я всегда получаю нулевое значение,

в то время как одно и то же всегда работает в андроиде activity's onCreate(). Я не понимаю, почему это происходит?

То же самое выполняется в классе активности, а не в тестовом проекте Android.

Я также добавляю разрешение на использование для READ_LOGS и WRITE_EXTERNAL_STORAGE в файл manifest.xml тестового проекта.

Кто-нибудь знает, как это работает или что происходит?

Заранее спасибо.


person user370305    schedule 07.10.2011    source источник
comment
Вам не нужен выходной поток?   -  person K-ballo    schedule 07.10.2011
comment
Вы имеете в виду, что вам не удается ничего зарегистрировать? Я настоятельно рекомендую вам поместить оператор регистрации в обработчик исключений...   -  person Jon Skeet    schedule 07.10.2011
comment
@Jon Skeet - Спасибо за ваш ответ, я получаю значения из логарифма. используя приведенную выше команду, теперь, когда то же самое. Если я добавляю активность Android, она дает мне целые значения из тега logcat с помощью ActivityManager, и то же самое возвращает нулевые значения в тестовом проекте Android. Я не понимаю, что происходит.   -  person user370305    schedule 07.10.2011
comment
@ user370305: Возможно, logcat просто не работает в тестовых проектах? Возможно, есть другие способы получения лог-информации в тестах?   -  person Jon Skeet    schedule 07.10.2011
comment
@Jon Skeet - я не знаю, доступны ли другие способы или нет, я также заметил, что это происходит только для logcat. Но мы можем распечатать сообщение журнала из тестового проекта, тогда почему мы не можем получить доступ для чтения?   -  person user370305    schedule 07.10.2011
comment
@ user370305: Я не знаю, но я ожидаю, что в документации будет что-то о диагностике...   -  person Jon Skeet    schedule 07.10.2011
comment
@Jon Skeet - хорошо, спасибо за ваше драгоценное время, уделенное мне. Теперь я пробую разные вещи, чтобы получить журнал в тестовом проекте. Еще раз спасибо.   -  person user370305    schedule 07.10.2011


Ответы (2)


Попробуйте добавить

    <uses-permission android:name="android.permission.READ_LOGS" />

к вашему манифесту.

person savemaxim    schedule 18.05.2012
comment
правильно прочитайте мой вопрос, о котором я упоминал, я добавил разрешение READ_LOGS. - person user370305; 18.05.2012

String []baseCommand = new String[]{"logcat", "-v","time"}; 
Process logReaderProcess = Runtime.getRuntime().exec(baseCommand);

попробуй это

person jazz    schedule 07.10.2011