Robolectric addResolveInfoForIntent не работает

С robolectric 3.3, я пытаюсь заставить диспетчер пакетов возвращать правильные значения для queryIntentServices, чтобы работать диспетчер задания Firebase.

В моем AndroidManifest.xml у меня есть:

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

И в моем тестовом классе приложений, который Robolectric вызывает, я поставил:

 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 } }) 

Однако Firebase все еще бросает эту ошибку:

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

Соответствующий код в проекте Firebase приведен ниже. Это выглядит очень просто, поэтому я не думаю, что это ошибка на их стороне.

 PackageManager pm = context.getPackageManager(); if (pm == null) { return getMutableSingletonList("PackageManager is null, can't validate service"); } final String msg = "Couldn't find a registered service with the name " + service + ". Is it declared 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; } } 

Я что-то делаю неправильно с использованием Robolectric?

Solutions Collecting From Web of "Robolectric addResolveInfoForIntent не работает"

Отвечая на мой собственный вопрос … код вызова должен быть в onCreate а не beforeTest – тогда он работает просто отлично!