Diese Frage SO ist sehr ähnlich zu dem, was ich tun möchte: How can I shadow the PackageManager with Robolectriczum Manager Robolectric Paket resolve Info hinzufügen
jedoch alle Antworten stützen sich auf ShadowApplication.setPackageManager(). In 2.2, scheint diese Methode nicht mehr zu existieren: http://robolectric.org/javadoc/org/robolectric/shadows/ShadowApplication.html
ich versuchte, nur den Paketmanager zu packen und eine Entschlossenheit Info hinzufügen:
RobolectricPackageManager packageManager = (RobolectricPackageManager) Robolectric.application.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN,null);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo ri = new ResolveInfo();
ActivityInfo ai = new ActivityInfo();
ai.packageName = "com.fun.test";
ri.activityInfo = ai;
ri.isDefault = true;
packageManager.addResolveInfoForIntent(intent, ri);
Aber ohne Erfolg. Weiß jemand, wie man das macht?
FWIW, in späteren Versionen von Robolectric kann der Paketmanager usi abgerufen werden ng 'RobolectricPackageManager packageManager = RuntimeEnvironment.getRobolectricPackageManager();' –
Ich bekomme keine Bewertung von android.content.pm.ResolveInfo.toString(), sobald es trifft ResolveInfo info = new ResolveInfo(); Ich versuchte ResolveInfo info1 = ShadowResolveInfo.newResolveInfo ("Facebook", FACEBOOK_PACKAGEINFO); von https://github.com/robolectric/robolectric/blob/master/robolectric/src/test/java/org/robolectric/shadows/ShadowPackageManagerTest.java Sogar dieser warf gleichen Fehler –
In Robolectric 3.4 ist dies jetzt 'ShadowPackageManager Package = shadowOf (RuntimeEnvironment.application.getPackageManager()); '. Siehe die Migrations Hinweise zur Info: http://robolectric.org/migrating/ –