ho una semplice classe Job
che si estende HandlerThread:Robolectric 3.0, non è riuscito a testare una funzione che avvia un HandlerThread
public class Job extends HandlerThread{
public Job(String name) {
super(name);
}
...
}
Poi, ho una classe JobUtils
che ha una funzione per ottenere un Job
& start()
esso :
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();
}
}
io uso Robolectric 3.0 nel mio test di unità, provo JobUtils
classe getAndStartJob(String name)
functi on:
@RunWith(RobolectricTestRunner.class)
public class TestJobUtils{
@Test
public void testGetAndStartJob() {
JobUtils jobUtils = new JobUtils();
// error here
jobUtils.getAndStartJob(“test-job”);
…
}
}
Quando eseguo il mio codice di unit test, ho ottenuto l'errore
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)
Sembra Robolectric non è in grado di avviare il HandlerThread
(il job
instace nel mio codice), o fare Mi manca qualcosa? Come sbarazzarsi di questo problema?