Модульное тестирование AsyncTaskLoader с помощью getLoaderResultSynchronously

Я пытаюсь создать модульные тесты для клиента REST, который выполняет некоторые вызовы API. Клиент отлично работает в реальном приложении, но я не могу запустить его в тестовом примере.

По-видимому, здесь можно было бы использовать LoaderTestCase.getLoaderResultSynchronously ()(, по крайней мере, согласно эталону Android, но он не примет мой загрузчик. Код:

public void testGetEventInfo() {
    // Init some vars
   ...

    // Create & execute loader
    RESTLoader loader = new RESTLoader(getContext(),
            RESTLoader.HTTPVerb.GET, action, params, LOADER_GET_NEWS);
    getLoaderResultSynchronously(loader);
}

Это приводит к ошибке getLoaderResultSynchronously (Loader )в типе LoaderTestCase неприменим для аргументов (RESTLoader).

RESTLoader расширяет AsyncLoader. Обратите внимание, что я использую библиотеку поддержки, может быть, загрузчик там несовместим? Документация не дает никакой информации об этом.

Я пытался решить эту проблему несколькими способами, но ни один из них не работает :

  • . Зарегистрировал слушателя для loader. Однако обратный вызов никогда не срабатывает
  • Использование CountdownLatch (также с прослушивателем ). Опять же, нет тайм-аута триггера/обратного отсчета.
  • Игра с шаблоном типа ()не увенчалась успехом.
  • Аналогичные решения на SO, но снова не доходят до слушателя.

Кто-нибудь знает, почему getLoaderResultSynchronously не принимает загрузчик? Или другой чистый способ тестирования загрузчика, включая способ проверки возвращаемых данных? Я могу протестировать обработку возвращаемых данных в отдельном случае, но я также хотел бы проверить фактические данные.

С уважением,

5
задан M. Meiboom 6 July 2012 в 13:56
поделиться