Update testcases which failed due to the SupportLibrary changed

Fragment.oncreate() causes an IllegalStateException. We use a
ShadowFragment to stop the calling sequence.

Fixes: 135086559
Test: robotest
Change-Id: I601e0f2513f826b0b7749cb2c013b7e4c0a94a33
This commit is contained in:
Sunny Shao
2019-06-13 17:06:31 +08:00
committed by Raff Tsai
parent f1c0f23510
commit 5da24591ea
14 changed files with 87 additions and 27 deletions

View File

@@ -37,6 +37,7 @@ import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.widget.WorkOnlyCategory; import com.android.settings.widget.WorkOnlyCategory;
import org.junit.Before; import org.junit.Before;
@@ -46,6 +47,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@@ -147,6 +149,7 @@ public class SettingsPreferenceFragmentTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_hasExtraFragmentKey_shouldExpandPreferences() { public void onCreate_hasExtraFragmentKey_shouldExpandPreferences() {
doReturn(mContext.getTheme()).when(mActivity).getTheme(); doReturn(mContext.getTheme()).when(mActivity).getTheme();
doReturn(mContext.getResources()).when(mFragment).getResources(); doReturn(mContext.getResources()).when(mFragment).getResources();
@@ -161,6 +164,7 @@ public class SettingsPreferenceFragmentTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_noPreferenceScreen_shouldNotCrash() { public void onCreate_noPreferenceScreen_shouldNotCrash() {
doReturn(mContext.getTheme()).when(mActivity).getTheme(); doReturn(mContext.getTheme()).when(mActivity).getTheme();
doReturn(mContext.getResources()).when(mFragment).getResources(); doReturn(mContext.getResources()).when(mFragment).getResources();

View File

@@ -32,6 +32,9 @@ import android.os.Bundle;
import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import com.android.settings.testutils.shadow.ShadowFragment;
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;
@@ -39,6 +42,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowAccessibilityManager; import org.robolectric.shadows.ShadowAccessibilityManager;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
@@ -47,6 +51,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Config(shadows = ShadowFragment.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AccessibilityDetailsSettingsFragmentTest { public class AccessibilityDetailsSettingsFragmentTest {
private final static String PACKAGE_NAME = "com.foo.bar"; private final static String PACKAGE_NAME = "com.foo.bar";

View File

@@ -54,6 +54,7 @@ import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowAccountManager; import com.android.settings.testutils.shadow.ShadowAccountManager;
import com.android.settings.testutils.shadow.ShadowContentResolver; import com.android.settings.testutils.shadow.ShadowContentResolver;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager; import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.widget.LayoutPreference; import com.android.settingslib.widget.LayoutPreference;
@@ -169,7 +170,8 @@ public class RemoveAccountPreferenceControllerTest {
} }
@Test @Test
@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class}) @Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
ShadowFragment.class})
public void confirmRemove_shouldRemoveAccount() public void confirmRemove_shouldRemoveAccount()
throws AuthenticatorException, OperationCanceledException, IOException { throws AuthenticatorException, OperationCanceledException, IOException {
when(mFragment.isAdded()).thenReturn(true); when(mFragment.isAdded()).thenReturn(true);
@@ -201,7 +203,8 @@ public class RemoveAccountPreferenceControllerTest {
} }
@Test @Test
@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class}) @Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
ShadowFragment.class})
public void confirmRemove_activityGone_shouldSilentlyRemoveAccount() public void confirmRemove_activityGone_shouldSilentlyRemoveAccount()
throws AuthenticatorException, OperationCanceledException, IOException { throws AuthenticatorException, OperationCanceledException, IOException {
final Account account = new Account("Account11", "com.acct1"); final Account account = new Account("Account11", "com.acct1");

View File

@@ -40,6 +40,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowSecureSettings; import com.android.settings.testutils.shadow.ShadowSecureSettings;
import com.android.settingslib.applications.DefaultAppInfo; import com.android.settingslib.applications.DefaultAppInfo;
@@ -133,6 +134,7 @@ public class DefaultAutofillPickerTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void mUserId_shouldDeriveUidFromManagedCaller() { public void mUserId_shouldDeriveUidFromManagedCaller() {
setupUserManager(); setupUserManager();
setupCaller(); setupCaller();
@@ -145,6 +147,7 @@ public class DefaultAutofillPickerTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void mUserId_shouldDeriveUidFromMainCaller() { public void mUserId_shouldDeriveUidFromMainCaller() {
setupUserManager(); setupUserManager();
setupCaller(); setupCaller();
@@ -157,6 +160,7 @@ public class DefaultAutofillPickerTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void mUserId_shouldDeriveUidFromManagedClick() { public void mUserId_shouldDeriveUidFromManagedClick() {
setupUserManager(); setupUserManager();
setupClick(/* forWork= */ true); setupClick(/* forWork= */ true);
@@ -169,6 +173,7 @@ public class DefaultAutofillPickerTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void mUserId_shouldDeriveUidFromMainClick() { public void mUserId_shouldDeriveUidFromMainClick() {
setupUserManager(); setupUserManager();
setupClick(/* forWork= */ false); setupClick(/* forWork= */ false);

View File

@@ -23,12 +23,12 @@ import static org.mockito.Mockito.verify;
import android.app.Dialog; import android.app.Dialog;
import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.Fingerprint;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment; import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment;
import com.android.settings.biometrics.fingerprint.FingerprintSettings import com.android.settings.biometrics.fingerprint.FingerprintSettings
.FingerprintSettingsFragment.DeleteFingerprintDialog; .FingerprintSettingsFragment.DeleteFingerprintDialog;
import com.android.settings.testutils.shadow.ShadowFragment;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -37,10 +37,12 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.androidx.fragment.FragmentController; import org.robolectric.shadows.androidx.fragment.FragmentController;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowFragment.class) @Config(shadows = DeleteFingerprintDialogTest.ShadowFragment.class)
public class DeleteFingerprintDialogTest { public class DeleteFingerprintDialogTest {
@Mock @Mock
@@ -75,4 +77,19 @@ public class DeleteFingerprintDialogTest {
verify(mTarget, never()).deleteFingerPrint(mFingerprint); verify(mTarget, never()).deleteFingerPrint(mFingerprint);
} }
@Implements(Fragment.class)
public static class ShadowFragment {
private Fragment mTargetFragment;
@Implementation
protected void setTargetFragment(Fragment fragment, int requestCode) {
mTargetFragment = fragment;
}
@Implementation
protected Fragment getTargetFragment() {
return mTargetFragment;
}
}
} }

View File

@@ -53,6 +53,7 @@ import com.android.settings.applications.AppInfoBase;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowDataUsageUtils; import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal; import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.AppItem; import com.android.settingslib.AppItem;
@@ -102,6 +103,7 @@ public class AppDataUsageTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_appUid_shouldGetAppLabelFromAppInfo() throws NameNotFoundException { public void onCreate_appUid_shouldGetAppLabelFromAppInfo() throws NameNotFoundException {
mFragment = spy(new AppDataUsage()); mFragment = spy(new AppDataUsage());
final FragmentActivity activity = spy(Robolectric.setupActivity(FragmentActivity.class)); final FragmentActivity activity = spy(Robolectric.setupActivity(FragmentActivity.class));
@@ -109,17 +111,17 @@ public class AppDataUsageTest {
doReturn(activity).when(mFragment).getActivity(); doReturn(activity).when(mFragment).getActivity();
doReturn(RuntimeEnvironment.application).when(mFragment).getContext(); doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider", ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider",
FakeFeatureFactory.setupForTest().dashboardFeatureProvider); FakeFeatureFactory.setupForTest().dashboardFeatureProvider);
final String packageName = "testPackage"; final String packageName = "testPackage";
final int uid = (Process.FIRST_APPLICATION_UID + Process.LAST_APPLICATION_UID) / 2; final int uid = (Process.FIRST_APPLICATION_UID + Process.LAST_APPLICATION_UID) / 2;
doReturn(new String[] {packageName}).when(mPackageManager).getPackagesForUid(uid); doReturn(new String[]{packageName}).when(mPackageManager).getPackagesForUid(uid);
final String label = "testLabel"; final String label = "testLabel";
final AppItem appItem = new AppItem(uid); final AppItem appItem = new AppItem(uid);
appItem.uids.put(uid, true); appItem.uids.put(uid, true);
final ApplicationInfo info = spy(new ApplicationInfo()); final ApplicationInfo info = spy(new ApplicationInfo());
doReturn(label).when(info).loadLabel(mPackageManager); doReturn(label).when(info).loadLabel(mPackageManager);
when(mPackageManager.getApplicationInfoAsUser( when(mPackageManager.getApplicationInfoAsUser(
eq(packageName), anyInt() /* flags */, anyInt() /* userId */)).thenReturn(info); eq(packageName), anyInt() /* flags */, anyInt() /* userId */)).thenReturn(info);
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putParcelable(AppDataUsage.ARG_APP_ITEM, appItem); args.putParcelable(AppDataUsage.ARG_APP_ITEM, appItem);
args.putInt(AppInfoBase.ARG_PACKAGE_UID, uid); args.putInt(AppInfoBase.ARG_PACKAGE_UID, uid);
@@ -131,10 +133,11 @@ public class AppDataUsageTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_notAppUid_shouldGetAppLabelFromUidDetailProvider() { public void onCreate_notAppUid_shouldGetAppLabelFromUidDetailProvider() {
mFragment = spy(new AppDataUsage()); mFragment = spy(new AppDataUsage());
ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider", ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider",
FakeFeatureFactory.setupForTest().dashboardFeatureProvider); FakeFeatureFactory.setupForTest().dashboardFeatureProvider);
doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity(); doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity();
doReturn(RuntimeEnvironment.application).when(mFragment).getContext(); doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
final UidDetailProvider uidDetailProvider = mock(UidDetailProvider.class); final UidDetailProvider uidDetailProvider = mock(UidDetailProvider.class);
@@ -144,7 +147,7 @@ public class AppDataUsageTest {
final UidDetail uidDetail = new UidDetail(); final UidDetail uidDetail = new UidDetail();
uidDetail.label = label; uidDetail.label = label;
when(uidDetailProvider.getUidDetail(eq(uid), anyBoolean() /* blocking */)). when(uidDetailProvider.getUidDetail(eq(uid), anyBoolean() /* blocking */)).
thenReturn(uidDetail); thenReturn(uidDetail);
final AppItem appItem = new AppItem(uid); final AppItem appItem = new AppItem(uid);
appItem.uids.put(uid, true); appItem.uids.put(uid, true);
final Bundle args = new Bundle(); final Bundle args = new Bundle();
@@ -166,7 +169,7 @@ public class AppDataUsageTest {
mFragment = spy(new AppDataUsage()); mFragment = spy(new AppDataUsage());
when(mFragment.getPreferenceManager()) when(mFragment.getPreferenceManager())
.thenReturn(mock(PreferenceManager.class, RETURNS_DEEP_STUBS)); .thenReturn(mock(PreferenceManager.class, RETURNS_DEEP_STUBS));
doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen(); doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
ReflectionHelpers.setField(mFragment, "mAppItem", mock(AppItem.class)); ReflectionHelpers.setField(mFragment, "mAppItem", mock(AppItem.class));
@@ -177,7 +180,7 @@ public class AppDataUsageTest {
@Test @Test
public void bindAppHeader_workApp_shouldSetWorkAppUid() public void bindAppHeader_workApp_shouldSetWorkAppUid()
throws PackageManager.NameNotFoundException { throws PackageManager.NameNotFoundException {
final int fakeUserId = 100; final int fakeUserId = 100;
mFragment = spy(new AppDataUsage()); mFragment = spy(new AppDataUsage());
@@ -198,7 +201,7 @@ public class AppDataUsageTest {
when(mHeaderController.setHasAppInfoLink(anyBoolean())).thenReturn(mHeaderController); when(mHeaderController.setHasAppInfoLink(anyBoolean())).thenReturn(mHeaderController);
when(mFragment.getPreferenceManager()) when(mFragment.getPreferenceManager())
.thenReturn(mock(PreferenceManager.class, RETURNS_DEEP_STUBS)); .thenReturn(mock(PreferenceManager.class, RETURNS_DEEP_STUBS));
doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen(); doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
mFragment.onViewCreated(new View(RuntimeEnvironment.application), new Bundle()); mFragment.onViewCreated(new View(RuntimeEnvironment.application), new Bundle());
@@ -276,7 +279,7 @@ public class AppDataUsageTest {
final long foregroundBytes = 5678L; final long foregroundBytes = 5678L;
final List<NetworkCycleDataForUid> appUsage = new ArrayList<>(); final List<NetworkCycleDataForUid> appUsage = new ArrayList<>();
appUsage.add(new NetworkCycleDataForUid.Builder() appUsage.add(new NetworkCycleDataForUid.Builder()
.setBackgroundUsage(backgroundBytes).setForegroundUsage(foregroundBytes).build()); .setBackgroundUsage(backgroundBytes).setForegroundUsage(foregroundBytes).build());
ReflectionHelpers.setField(mFragment, "mUsageData", appUsage); ReflectionHelpers.setField(mFragment, "mUsageData", appUsage);
final Preference backgroundPref = mock(Preference.class); final Preference backgroundPref = mock(Preference.class);
ReflectionHelpers.setField(mFragment, "mBackgroundUsage", backgroundPref); ReflectionHelpers.setField(mFragment, "mBackgroundUsage", backgroundPref);
@@ -291,7 +294,7 @@ public class AppDataUsageTest {
verify(cycle).setVisible(true); verify(cycle).setVisible(true);
verify(totalPref).setSummary( verify(totalPref).setSummary(
DataUsageUtils.formatDataUsage(context, backgroundBytes + foregroundBytes)); DataUsageUtils.formatDataUsage(context, backgroundBytes + foregroundBytes));
verify(backgroundPref).setSummary(DataUsageUtils.formatDataUsage(context, backgroundBytes)); verify(backgroundPref).setSummary(DataUsageUtils.formatDataUsage(context, backgroundBytes));
verify(foregroundPref).setSummary(DataUsageUtils.formatDataUsage(context, foregroundBytes)); verify(foregroundPref).setSummary(DataUsageUtils.formatDataUsage(context, foregroundBytes));
} }
@@ -306,12 +309,12 @@ public class AppDataUsageTest {
ReflectionHelpers.setField(mFragment, "mContext", context); ReflectionHelpers.setField(mFragment, "mContext", context);
ReflectionHelpers.setField(mFragment, "mAppItem", appItem); ReflectionHelpers.setField(mFragment, "mAppItem", appItem);
ReflectionHelpers.setField(mFragment, "mTemplate", ReflectionHelpers.setField(mFragment, "mTemplate",
NetworkTemplate.buildTemplateWifiWildcard()); NetworkTemplate.buildTemplateWifiWildcard());
final long end = System.currentTimeMillis(); final long end = System.currentTimeMillis();
final long start = end - (DateUtils.WEEK_IN_MILLIS * 4); final long start = end - (DateUtils.WEEK_IN_MILLIS * 4);
final NetworkCycleDataForUidLoader loader = (NetworkCycleDataForUidLoader) final NetworkCycleDataForUidLoader loader = (NetworkCycleDataForUidLoader)
mFragment.mUidDataCallbacks.onCreateLoader(0, Bundle.EMPTY); mFragment.mUidDataCallbacks.onCreateLoader(0, Bundle.EMPTY);
final List<Integer> uids = loader.getUids(); final List<Integer> uids = loader.getUids();
assertThat(uids).hasSize(1); assertThat(uids).hasSize(1);
@@ -331,12 +334,12 @@ public class AppDataUsageTest {
ReflectionHelpers.setField(mFragment, "mContext", context); ReflectionHelpers.setField(mFragment, "mContext", context);
ReflectionHelpers.setField(mFragment, "mAppItem", appItem); ReflectionHelpers.setField(mFragment, "mAppItem", appItem);
ReflectionHelpers.setField(mFragment, "mTemplate", ReflectionHelpers.setField(mFragment, "mTemplate",
NetworkTemplate.buildTemplateWifiWildcard()); NetworkTemplate.buildTemplateWifiWildcard());
final long end = System.currentTimeMillis(); final long end = System.currentTimeMillis();
final long start = end - (DateUtils.WEEK_IN_MILLIS * 4); final long start = end - (DateUtils.WEEK_IN_MILLIS * 4);
final NetworkCycleDataForUidLoader loader = (NetworkCycleDataForUidLoader) final NetworkCycleDataForUidLoader loader = (NetworkCycleDataForUidLoader)
mFragment.mUidDataCallbacks.onCreateLoader(0, Bundle.EMPTY); mFragment.mUidDataCallbacks.onCreateLoader(0, Bundle.EMPTY);
final List<Integer> uids = loader.getUids(); final List<Integer> uids = loader.getUids();
assertThat(uids).hasSize(3); assertThat(uids).hasSize(3);
@@ -362,10 +365,10 @@ public class AppDataUsageTest {
ReflectionHelpers.setField(mFragment, "mCycles", testCycles); ReflectionHelpers.setField(mFragment, "mCycles", testCycles);
ReflectionHelpers.setField(mFragment, "mAppItem", appItem); ReflectionHelpers.setField(mFragment, "mAppItem", appItem);
ReflectionHelpers.setField(mFragment, "mTemplate", ReflectionHelpers.setField(mFragment, "mTemplate",
NetworkTemplate.buildTemplateWifiWildcard()); NetworkTemplate.buildTemplateWifiWildcard());
final NetworkCycleDataForUidLoader loader = (NetworkCycleDataForUidLoader) final NetworkCycleDataForUidLoader loader = (NetworkCycleDataForUidLoader)
mFragment.mUidDataCallbacks.onCreateLoader(0 /* id */, Bundle.EMPTY /* args */); mFragment.mUidDataCallbacks.onCreateLoader(0 /* id */, Bundle.EMPTY /* args */);
final ArrayList<Long> cycles = loader.getCycles(); final ArrayList<Long> cycles = loader.getCycles();
assertThat(cycles).hasSize(2); assertThat(cycles).hasSize(2);
@@ -409,13 +412,14 @@ public class AppDataUsageTest {
} }
@Test @Test
@Config(shadows = {ShadowDataUsageUtils.class, ShadowSubscriptionManager.class}) @Config(shadows = {ShadowDataUsageUtils.class, ShadowSubscriptionManager.class,
ShadowFragment.class})
public void onCreate_noNetworkTemplateAndInvalidDataSubscription_shouldUseWifiTemplate() { public void onCreate_noNetworkTemplateAndInvalidDataSubscription_shouldUseWifiTemplate() {
ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true; ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true;
ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true; ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;
ShadowDataUsageUtils.HAS_SIM = false; ShadowDataUsageUtils.HAS_SIM = false;
ShadowSubscriptionManager.setDefaultDataSubscriptionId( ShadowSubscriptionManager.setDefaultDataSubscriptionId(
SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mFragment = spy(new AppDataUsage()); mFragment = spy(new AppDataUsage());
doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity(); doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity();
doReturn(RuntimeEnvironment.application).when(mFragment).getContext(); doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
@@ -424,7 +428,7 @@ public class AppDataUsageTest {
doReturn(new UidDetail()).when(uidDetailProvider).getUidDetail(anyInt(), anyBoolean()); doReturn(new UidDetail()).when(uidDetailProvider).getUidDetail(anyInt(), anyBoolean());
ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider", ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider",
FakeFeatureFactory.setupForTest().dashboardFeatureProvider); FakeFeatureFactory.setupForTest().dashboardFeatureProvider);
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putInt(AppInfoBase.ARG_PACKAGE_UID, 123123); args.putInt(AppInfoBase.ARG_PACKAGE_UID, 123123);
mFragment.setArguments(args); mFragment.setArguments(args);
@@ -432,6 +436,6 @@ public class AppDataUsageTest {
mFragment.onCreate(Bundle.EMPTY); mFragment.onCreate(Bundle.EMPTY);
assertThat(mFragment.mTemplate.getMatchRule()) assertThat(mFragment.mTemplate.getMatchRule())
.isEqualTo(NetworkTemplate.MATCH_WIFI_WILDCARD); .isEqualTo(NetworkTemplate.MATCH_WIFI_WILDCARD);
} }
} }

View File

@@ -45,6 +45,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.FooterPreferenceMixinCompat; import com.android.settingslib.widget.FooterPreferenceMixinCompat;
@@ -56,6 +57,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@@ -142,6 +144,7 @@ public class BillingCycleSettingsTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_emptyArguments_shouldSetDefaultNetworkTemplate() { public void onCreate_emptyArguments_shouldSetDefaultNetworkTemplate() {
final BillingCycleSettings billingCycleSettings = spy(new BillingCycleSettings()); final BillingCycleSettings billingCycleSettings = spy(new BillingCycleSettings());
when(billingCycleSettings.getContext()).thenReturn(mContext); when(billingCycleSettings.getContext()).thenReturn(mContext);

View File

@@ -38,6 +38,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.deviceinfo.BuildNumberPreferenceController; import com.android.settings.deviceinfo.BuildNumberPreferenceController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -90,6 +91,7 @@ public class MyDeviceInfoFragmentTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_fromSearch_shouldNotOverrideInitialExpandedCount() { public void onCreate_fromSearch_shouldNotOverrideInitialExpandedCount() {
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putString(EXTRA_FRAGMENT_ARG_KEY, "search_key"); args.putString(EXTRA_FRAGMENT_ARG_KEY, "search_key");

View File

@@ -46,6 +46,7 @@ import androidx.preference.SwitchPreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.network.ApnEditor.ApnData; import com.android.settings.network.ApnEditor.ApnData;
import com.android.settings.testutils.shadow.ShadowFragment;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -58,6 +59,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class ApnEditorTest { public class ApnEditorTest {
@@ -455,6 +457,7 @@ public class ApnEditorTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void onCreate_noAction_shouldFinishAndNoCrash() { public void onCreate_noAction_shouldFinishAndNoCrash() {
doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt()); doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt());

View File

@@ -16,6 +16,8 @@
package com.android.settings.testutils.shadow; package com.android.settings.testutils.shadow;
import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implementation;
@@ -26,6 +28,11 @@ public class ShadowFragment {
private Fragment mTargetFragment; private Fragment mTargetFragment;
@Implementation
public void onCreate(Bundle icicle) {
// do nothing
}
@Implementation @Implementation
protected void setTargetFragment(Fragment fragment, int requestCode) { protected void setTargetFragment(Fragment fragment, int requestCode) {
mTargetFragment = fragment; mTargetFragment = fragment;

View File

@@ -50,6 +50,7 @@ import com.android.settings.R;
import com.android.settings.datausage.DataUsagePreference; import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.search.SearchIndexableRaw; import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.testutils.shadow.ShadowDataUsageUtils; import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.WifiTracker; import com.android.settingslib.wifi.WifiTracker;
@@ -247,7 +248,7 @@ public class WifiSettingsTest {
} }
@Test @Test
@Config(shadows = {ShadowDataUsageUtils.class}) @Config(shadows = {ShadowDataUsageUtils.class, ShadowFragment.class})
public void checkDataUsagePreference_perferenceInvisibleIfWifiNotSupported() { public void checkDataUsagePreference_perferenceInvisibleIfWifiNotSupported() {
setUpForOnCreate(); setUpForOnCreate();
ShadowDataUsageUtils.IS_WIFI_SUPPORTED = false; ShadowDataUsageUtils.IS_WIFI_SUPPORTED = false;
@@ -258,7 +259,7 @@ public class WifiSettingsTest {
} }
@Test @Test
@Config(shadows = {ShadowDataUsageUtils.class}) @Config(shadows = {ShadowDataUsageUtils.class, ShadowFragment.class})
public void checkDataUsagePreference_perferenceVisibleIfWifiSupported() { public void checkDataUsagePreference_perferenceVisibleIfWifiSupported() {
setUpForOnCreate(); setUpForOnCreate();
ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true; ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;

View File

@@ -41,6 +41,7 @@ import androidx.recyclerview.widget.RecyclerView.OnScrollListener;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowDisclaimerItemFactory; import com.android.settings.testutils.shadow.ShadowDisclaimerItemFactory;
import com.android.settings.testutils.shadow.ShadowFragment;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -57,7 +58,7 @@ import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowDisclaimerItemFactory.class) @Config(shadows = {ShadowDisclaimerItemFactory.class, ShadowFragment.class})
public class WifiCallingDisclaimerFragmentTest { public class WifiCallingDisclaimerFragmentTest {
@Mock @Mock

View File

@@ -55,6 +55,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settings.widget.ToggleSwitch; import com.android.settings.widget.ToggleSwitch;
@@ -67,7 +68,9 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
import org.robolectric.annotation.Config;
@Config(shadows = ShadowFragment.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class WifiCallingSettingsForSubTest { public class WifiCallingSettingsForSubTest {
private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_MODE = "wifi_calling_mode";

View File

@@ -39,6 +39,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowWifiManager; import com.android.settings.testutils.shadow.ShadowWifiManager;
import org.junit.Before; import org.junit.Before;
@@ -115,6 +116,7 @@ public class WifiTetherSettingsTest {
} }
@Test @Test
@Config(shadows = ShadowFragment.class)
public void startFragment_notAdminUser_shouldRemoveAllPreferences() { public void startFragment_notAdminUser_shouldRemoveAllPreferences() {
final WifiTetherSettings settings = spy(new WifiTetherSettings()); final WifiTetherSettings settings = spy(new WifiTetherSettings());
final FragmentActivity activity = mock(FragmentActivity.class); final FragmentActivity activity = mock(FragmentActivity.class);