Merge "Update to Robolectric 3.4.2"

This commit is contained in:
Maurice Lam 2017-09-19 16:51:01 +00:00 committed by Android (Google) Code Review
commit 1ae463059c
3 changed files with 23 additions and 11 deletions

View file

@ -38,8 +38,8 @@ android.sourceSets {
java.srcDirs = ['test/robotest/src'] java.srcDirs = ['test/robotest/src']
dependencies { dependencies {
testCompile 'org.robolectric:robolectric:3.+' testCompile 'org.robolectric:robolectric:3.4.2'
testCompile 'org.robolectric:shadows-core:3.+' testCompile 'org.robolectric:framework:3.4.2'
testCompile 'junit:junit:4.+' testCompile 'junit:junit:4.+'
testCompile 'org.mockito:mockito-core:1.9.5' testCompile 'org.mockito:mockito-core:1.9.5'
// Workaround for https://github.com/robolectric/robolectric/issues/2566 // Workaround for https://github.com/robolectric/robolectric/issues/2566

View file

@ -31,6 +31,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Build.VERSION; import android.os.Build.VERSION;
@ -40,20 +41,25 @@ import com.android.setupwizardlib.BuildConfig;
import com.android.setupwizardlib.R; import com.android.setupwizardlib.R;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
import com.android.setupwizardlib.util.Partner.ResourceEntry; import com.android.setupwizardlib.util.Partner.ResourceEntry;
import com.android.setupwizardlib.util.PartnerTest.ShadowApplicationPackageManager;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.res.builder.DefaultPackageManager; import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowResources; import org.robolectric.shadows.ShadowResources;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@RunWith(SuwLibRobolectricTestRunner.class) @RunWith(SuwLibRobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) @Config(
constants = BuildConfig.class,
sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK },
shadows = ShadowApplicationPackageManager.class)
public class PartnerTest { public class PartnerTest {
private static final String ACTION_PARTNER_CUSTOMIZATION = private static final String ACTION_PARTNER_CUSTOMIZATION =
@ -62,7 +68,7 @@ public class PartnerTest {
private Context mContext; private Context mContext;
private Resources mPartnerResources; private Resources mPartnerResources;
private TestPackageManager mPackageManager; private ShadowApplicationPackageManager mPackageManager;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
@ -71,8 +77,9 @@ public class PartnerTest {
mContext = spy(application); mContext = spy(application);
mPartnerResources = spy(ShadowResources.getSystem()); mPartnerResources = spy(ShadowResources.getSystem());
mPackageManager = new TestPackageManager(); mPackageManager =
RuntimeEnvironment.setRobolectricPackageManager(mPackageManager); (ShadowApplicationPackageManager) Shadows.shadowOf(application.getPackageManager());
mPackageManager.partnerResources = mPartnerResources;
} }
@Test @Test
@ -173,13 +180,18 @@ public class PartnerTest {
return info; return info;
} }
private class TestPackageManager extends DefaultPackageManager { @Implements(className = "android.app.ApplicationPackageManager")
public static class ShadowApplicationPackageManager extends
org.robolectric.shadows.ShadowApplicationPackageManager {
public Resources partnerResources;
@Implementation
@Override @Override
public Resources getResourcesForApplication(ApplicationInfo app) public Resources getResourcesForApplication(ApplicationInfo app)
throws NameNotFoundException { throws NameNotFoundException {
if (app != null && "test.partner.package".equals(app.packageName)) { if (app != null && "test.partner.package".equals(app.packageName)) {
return mPartnerResources; return partnerResources;
} else { } else {
return super.getResourcesForApplication(app); return super.getResourcesForApplication(app);
} }

View file

@ -48,7 +48,7 @@ import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements; import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject; import org.robolectric.annotation.RealObject;
import org.robolectric.internal.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowMediaPlayer; import org.robolectric.shadows.ShadowMediaPlayer;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;