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() :

  • Android: Poner cuadrícula de objetos dinámicos y personalizados dentro de otra cuadrícula de objetos dinámicos y personalizados
  • Cambios de orientación de orientación de Android onCreate
  • IntentService se matará después de detener mi aplicación
  • Cómo modificar la lista de capas mediante programación en Android?
  • Escala de imagen para rellenar el ancho de ImageView y mantener la relación de aspecto
  • Iniciar intención "silenciosamente"
  •  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?

  • ¿Dónde está Eclipse Marketplace en Android SDK
  • Forma personalizada mientras conversas en android usando un archivo xml
  • Cuadro de texto de dirección IP en Android?
  • No se puede resolver el destino 'android-8' después de importar las bibliotecas
  • ¿String timestamp a Calendario en Java?
  • Posible anular la biblioteca del sistema .so en la aplicación
  • 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.