Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Robolectric 3.0, no pudo probar una función que inicia un HandlerThread

Tengo un Job clase simple que se extiende HandlerThread :

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

Entonces, tengo una clase de JobUtils que tiene una función para conseguir un Job & start() :

  • Cómo configurar la imagen de fondo del botón a través del código
  • Android studio 2.0 bug: no hay cambios para implementar
  • Android: ¿Utilizar una tableta para emular otros dispositivos?
  • ¿Cómo mostrar el símbolo de copyright en un cuadro de diálogo de Android?
  • Grabar video con un tamaño de 480 * 480 px en android?
  • Square Dagger IllegalStateException: No se pudo cargar el adaptador de módulo para la clase MyApplicationModule
  •  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(); } } 

    Utilizo Robolectric 3.0 en mi prueba de unidad, JobUtils la 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”); … } } 

    Cuando ejecuto mi código de prueba de unidad, tengo el error

     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) 

    Parece que Robolectric no es capaz de iniciar el HandlerThread (el job instace en mi código), o me falto algo? ¿Cómo deshacerse de este problema?

  • NPE en ChangeCurrentByOneFromLongPressCommand (en dispositivos Samsung con Android 4.3)
  • Actualizar ListView en el hilo principal de otro hilo
  • OnTouchListener no funciona con el diseño relativo
  • Establecer el color de fondo para la barra de título de diálogo?
  • No se encontró el comando adb
  • Android - ¿Se puede utilizar el Cursor SQLite después de cerrar la base de datos?
  • One Solution collect form web for “Robolectric 3.0, no pudo probar una función que inicia un HandlerThread”

    Me enfrenté a un problema similar, no estoy seguro de si su razón es la misma porque he usado RobolectricGradleTestRunner y no ha publicado todo el cuerpo del método de prueba. En mi caso resulta que la aplicación de Robolectric ( RuntimeEnvironment.application ) se establece en null (fuente de NPE) antes de que HandlerThread comience a ejecutarse porque el método de prueba llega al final anterior.

    La solución consiste en esperar todos los resultados programados al final del método de prueba:

      Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.