Intereting Posts

Почему Log.d () ничего не печатает при запуске теста локального блока Android?

Я пытаюсь напечатать что-то при запуске Android Local Unit Test , но ничего не происходит. Что случилось? Как я могу это исправить?

Я посоветовался с некоторыми документами на http://developer.android.com , обнаружил, что Android Local Unit Test просто запускается на JVM моей машины, файл android.jar, который используется для запуска модульных тестов, не содержит никакого реального кода, поэтому Log. D () ничего не печатать. Если я хочу распечатать журнал, как я могу это сделать?

Вот мой код, FeedbackModelTest.java, расположенный в каталоге src / test / main .

package com.upward.reader.mvp.model; import android.util.Log; import com.upward.reader.mvp.bean.FeedbackBean; import com.upward.reader.net.RequestJSONCallback; import org.junit.Test; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class FeedbackModelTest { @Test public void postFeedback() throws Exception { final String url = "http://test.guguread.com/interface/app/user/feedback?"; Map<String, String> params = new HashMap<>(); params.put("content", "content"); new FeedbackModel().postFeedback(url, params, new RequestJSONCallback<FeedbackBean>() { @Override public void onResponse(FeedbackBean result) throws IOException { Log.d("TAG", result.toString()); } @Override public void onFailure(Exception e) { e.printStackTrace(); } }); } 

}

Вы должны использовать стандартный вывод, System.out.println("Hello StackOverflow") следует использовать в Log.x() . Затем вы можете увидеть информацию о журнале на вкладке run. Введите описание изображения здесь

От поддержки тестирования модулей :

Файл android.jar, который используется для запуска модульных тестов, не содержит никакого реального кода, который предоставляется изображением системы Android на реальных устройствах. Вместо этого все методы генерируют исключения (по умолчанию). Это делается для того, чтобы убедиться, что ваш модуль тестирует только ваш код и не зависит от какого-либо конкретного поведения платформы Android (которое вы явно не издевались, например, с помощью Mockito). Если это окажется проблематичным, вы можете добавить фрагмент ниже к вашему build.gradle, чтобы изменить это поведение:

  android { // ... testOptions { unitTests.returnDefaultValues = true } } 

Если вам нужно задействовать в своих тестах какой-то код, связанный с Android, который вы используете (Log.d), вы можете использовать платформу тестирования, такую ​​как Robolectric, которая призвана действовать как код Android.jar, который ссылается на ваш код. Путем настройки вашего тестового бегуна для запуска в Robolectric и установки правильного флага конфигурации в аннотации конфигурации robolectric вы можете включить ведение журнала с использованием методов ведения журнала.