Intereting Posts
Проблемы с отображением Не удалось загрузить LayoutLib: Android Handler меняет WeakReference Как легко удалить ненужные ресурсы локализации из добавленных библиотек в релизе APK Как загрузить растровое изображение в изображение с помощью Picasso Есть ли способ загрузить и частично отрисовать растровое изображение из файла на Android? Listview.getCheckedItemPositions () не возвращает правильный результат, когда элемент не установлен Android sherlock setDisplayHomeAsUpEnabled не работает и как настроить пользовательскую цель? Отправить SMS с помощью сервиса adb shell call isms Android 4.1.2 Как сделать прослушиватель прокрутки для WebView в Android Делает minHeight делать что-нибудь? Услуга пробуждения непосредственно из AlarmManager Как регистрировать данные с Android Motion Sensors с фиксированной скоростью RelativeLayout "Не удалось разрешить ресурс …" Android Как разрешить пользователям оценивать приложение Android из приложения (без перенаправления в Play Маркет) Ошибка в программе Android NDK не может найти

Robolectric 3.0, не удалось проверить функцию, которая запускает HandlerThread

У меня есть простой класс Job который расширяет HandlerThread :

 public class Job extends HandlerThread{ public Job(String name) { super(name); } ... } 

Затем у меня есть класс JobUtils который имеет функцию, чтобы получить Job & start() :

 public JobUtils { public JobUtils() { } // I unit test this function in my test class below public Job getAndStartJob(String name) { Job job = new Job(name); job.start(); } } 

Я использую Robolectric 3.0 в своем модульном тесте, я тестирую класс getAndStartJob(String name) ' getAndStartJob(String name) :

 @RunWith(RobolectricTestRunner.class) public class TestJobUtils{ @Test public void testGetAndStartJob() { JobUtils jobUtils = new JobUtils(); // error here jobUtils.getAndStartJob(“test-job”); … } } 

Когда я запускаю свой модульный тестовый код, я получил ошибку

 Exception in thread "test-job” java.lang.NullPointerException at org.robolectric.shadows.ShadowLooper.getMainLooper(ShadowLooper.java:70) at org.robolectric.shadows.ShadowLooper.doLoop(ShadowLooper.java:85) at org.robolectric.shadows.ShadowLooper.loop(ShadowLooper.java:76) at android.os.Looper.loop(Looper.java) at android.os.HandlerThread.run(HandlerThread.java:60) 

Похоже, что Robolectric не может запустить HandlerThread ( job в моем коде), или мне что-то не хватает? Как избавиться от этой проблемы?

Solutions Collecting From Web of "Robolectric 3.0, не удалось проверить функцию, которая запускает HandlerThread"

Я столкнулся с подобной проблемой, не уверен, что ваша причина такая же, потому что я использовал RobolectricGradleTestRunner и вы не опубликовали весь метод метода тестирования. В моем случае выясняется, что приложение RuntimeEnvironment.application ( RuntimeEnvironment.application ) установлено RuntimeEnvironment.application null (источник NPE) до того, как HandlerThread начнет выполнение, потому что метод теста достигает конца раньше.

Обходным решением является ожидание всех запланированных runnables в конце метода тестирования:

  Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler();