У меня есть некоторые проблемы с моей резьбой. В режиме отладки и во время модульных тестов AsyncTask не выполняется как один поток.
Кроме того, я получаю тайм-аут, когда пытаюсь проверить свой HTTP-сообщение на реальном сервере. Я получил это раньше в эмуляторе, и это было решено
StrictMode.setThreadPolicy(policy);
К сожалению, это не работает на Robolectric, потому что я получаю сообщение об ошибке
java.lang.NoClassDefFoundError: dalvik/system/CloseGuard$Reporter
как я могу решить эту проблему и продолжить создание своих модульных тестов с помощью robolectric? Возможно ли, что я обработал что-то неправильно во время потоков? Асинхронная задача:
public class HttpPostTask extends
AsyncTask<MyContainer, Integer, MyResult> {
@Override
protected MyResult doInBackground(MyContainer... params) {
/* some code here */
resp = client.execute(container.post);
}
}
выполнение асинхронной задачи:
new HttpPostTask().execute(container);
Спасибо
=============== ОБНОВЛЕНИЕ ==================== Я вставил несколько отпечатков, чтобы выяснить, в какой теме работает сообщение. Вот результаты:
в эмуляторе:
09-27 09:19:12.909: I/System.out(1813): Running REST Client on thread 'Thread-83'
09-27 09:19:12.909: I/System.out(1813): Running HTTP Post on thread 'AsyncTask #2'
в Робоэлектрике:
Running REST Client on thread 'main'
Running HTTP Post on thread 'main'
через некоторое время я получаю отказ + исключение тайм-аута:
org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2:8080 refused
Чтобы обойти HTTP-сообщение Robolectric, я использовал это: 'Robolectric.getFakeHttpLayer().interceptHttpRequests(false);'