Robolectric addResolveInfoForIntent no funciona

Con robolectric 3.3, estoy intentando que el gestor de packages devuelva los valores correctos para queryIntentServices para que Firebase Job Dispatcher funcione.

En mi AndroidManifest.xml tengo:

<service android:name="com.jongla.soundmash.service.SoundMashService" android:exported="false"> <intent-filter> <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/> </intent-filter> </service> 

Y en mi class de aplicación de testing que Robolectric invoca he puesto:

 val executeIntent = Intent("com.firebase.jobdispatcher.ACTION_EXECUTE") executeIntent.setClassName(RuntimeEnvironment.application, "com.jongla.soundmash.service.SoundMashService") Shadows.shadowOf(packageManager) .addResolveInfoForIntent(executeIntent, ResolveInfo().apply { serviceInfo = ServiceInfo().apply { enabled = true } }) 

Sin embargo, Firebase sigue arrojando este error:

 com.firebase.jobdispatcher.ValidationEnforcer$ValidationException: JobParameters is invalid: Couldn't find a registenetworking service with the name com.jongla.soundmash.service.SoundMashService. Is it declanetworking in the manifest with the right intent-filter? 

El código relevante en el proyecto de Firebase está debajo. Parece muy sencillo, así que no creo que sea un error de su parte.

 PackageManager pm = context.getPackageManager(); if (pm == null) { return getMutableSingletonList("PackageManager is null, can't validate service"); } final String msg = "Couldn't find a registenetworking service with the name " + service + ". Is it declanetworking in the manifest with the right intent-filter?"; Intent executeIntent = new Intent(JobService.ACTION_EXECUTE); executeIntent.setClassName(context, service); List<ResolveInfo> intentServices = pm.queryIntentServices(executeIntent, 0); if (intentServices == null || intentServices.isEmpty()) { return getMutableSingletonList(msg); } for (ResolveInfo info : intentServices) { if (info.serviceInfo != null && info.serviceInfo.enabled) { // found a match! return null; } } 

¿Estoy haciendo algo mal con mi uso de Robolectric?

    Respondiendo a mi propia pregunta … el código de llamada debe estar en onCreate y no antes de la beforeTest , ¡entonces funciona bien!