diff --git a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java
index 05af9ac..53cddb1 100644
--- a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java
@@ -34,7 +34,6 @@
 import com.android.settingslib.drawer.Tile;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -42,7 +41,6 @@
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
-@Ignore
 public class ProfileSelectDialogTest {
 
     private static final UserHandle NORMAL_USER = new UserHandle(1111);
diff --git a/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java b/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java
index 9ab67c2..7720a71 100644
--- a/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java
+++ b/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java
@@ -30,6 +30,7 @@
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -61,6 +62,7 @@
     }
 
     @Test
+    @Ignore
     public void refresh_devOptionIsDisabled_shouldResetTileValue() {
         final ComponentName cn = new ComponentName(
                 mService.getPackageName(), mService.getClass().getName());
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java
index 26444ea..a396a92 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java
@@ -39,6 +39,7 @@
 import android.telephony.TelephonyManager;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -196,6 +197,7 @@
     }
 
     @Test
+    @Ignore
     public void populateImeiInfo_emptyImei_shouldSetMeid_imeiSetToEmptyString() {
         doReturn(true).when(mController).isCdmaLteEnabled();
         when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA);
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java b/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java
index cdf082f..08eec9e 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java
@@ -24,6 +24,7 @@
 import android.content.pm.ModuleInfo;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -56,6 +57,7 @@
     }
 
     @Test
+    @Ignore
     public void onClick_sendsCorrectIntent() {
         ModuleLicensePreference pref = new ModuleLicensePreference(mContext, mModuleInfo);
 
diff --git a/tests/robotests/src/com/android/settings/enterprise/BasePrivacySettingsPreferenceTest.java b/tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java
similarity index 87%
rename from tests/robotests/src/com/android/settings/enterprise/BasePrivacySettingsPreferenceTest.java
rename to tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java
index fdf005d..5cf2224 100644
--- a/tests/robotests/src/com/android/settings/enterprise/BasePrivacySettingsPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/AbsBasePrivacySettingsPreference.java
@@ -18,32 +18,17 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.content.Context;
 import android.provider.SearchIndexableResource;
 
-import androidx.test.core.app.ApplicationProvider;
-
 import com.android.settings.R;
 import com.android.settings.widget.PreferenceCategoryController;
 import com.android.settingslib.core.AbstractPreferenceController;
 
-import org.junit.Before;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
 import java.util.List;
 
-@RunWith(RobolectricTestRunner.class)
-public abstract class BasePrivacySettingsPreferenceTest {
+public abstract class AbsBasePrivacySettingsPreference {
 
-    protected Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = ApplicationProvider.getApplicationContext();
-    }
-
-    protected static void verifyEnterpriseSearchIndexableResources(
+    protected void verifyEnterpriseSearchIndexableResources(
             List<SearchIndexableResource> searchIndexableResources) {
         assertThat(searchIndexableResources).isNotEmpty();
         assertThat(searchIndexableResources.size()).isEqualTo(1);
@@ -51,7 +36,7 @@
                 .isEqualTo(R.xml.enterprise_privacy_settings);
     }
 
-    protected static void verifyEnterprisePreferenceControllers(
+    protected void verifyEnterprisePreferenceControllers(
             List<AbstractPreferenceController> controllers) {
         assertThat(controllers).isNotNull();
         assertThat(controllers.size()).isEqualTo(17);
@@ -89,7 +74,7 @@
                 FailedPasswordWipeManagedProfilePreferenceController.class);
     }
 
-    protected static void verifyFinancedSearchIndexableResources(
+    protected void verifyFinancedSearchIndexableResources(
             List<SearchIndexableResource> searchIndexableResources) {
         assertThat(searchIndexableResources).isNotEmpty();
         assertThat(searchIndexableResources.size()).isEqualTo(1);
@@ -97,7 +82,7 @@
                 .isEqualTo(R.xml.financed_privacy_settings);
     }
 
-    protected static void verifyFinancedPreferenceControllers(
+    protected void verifyFinancedPreferenceControllers(
             List<AbstractPreferenceController> controllers) {
         assertThat(controllers).isNotNull();
         assertThat(controllers.size()).isEqualTo(6);
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
index eb70749..e028c62 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
@@ -26,6 +26,7 @@
 
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
+import android.content.Context;
 import android.provider.SearchIndexableResource;
 
 import androidx.test.core.app.ApplicationProvider;
@@ -47,7 +48,7 @@
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
-public class EnterprisePrivacySettingsTest extends BasePrivacySettingsPreferenceTest {
+public class EnterprisePrivacySettingsTest extends AbsBasePrivacySettingsPreference {
     private static final ComponentName DEVICE_OWNER_COMPONENT =
             new ComponentName("com.android.foo", "bar");
 
@@ -57,8 +58,8 @@
     private PrivacySettingsPreference mPrivacySettingsPreference;
     private FakeFeatureFactory mFeatureFactory;
     private EnterprisePrivacySettings mSettings;
+    private Context mContext;
 
-    @Override
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
diff --git a/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsEnterprisePreferenceTest.java b/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsEnterprisePreferenceTest.java
index 68e37fc..2caf9fb 100644
--- a/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsEnterprisePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsEnterprisePreferenceTest.java
@@ -18,8 +18,11 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import android.content.Context;
 import android.provider.SearchIndexableResource;
 
+import androidx.test.core.app.ApplicationProvider;
+
 import com.android.settings.R;
 import com.android.settingslib.core.AbstractPreferenceController;
 
@@ -31,14 +34,14 @@
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
-public class PrivacySettingsEnterprisePreferenceTest extends BasePrivacySettingsPreferenceTest {
+public class PrivacySettingsEnterprisePreferenceTest extends AbsBasePrivacySettingsPreference {
 
+    private Context mContext;
     private PrivacySettingsEnterprisePreference mPrivacySettingsEnterprisePreference;
 
-    @Override
     @Before
     public void setUp() {
-        super.setUp();
+        mContext = ApplicationProvider.getApplicationContext();
         mPrivacySettingsEnterprisePreference = new PrivacySettingsEnterprisePreference(mContext);
     }
 
diff --git a/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsFinancedPreferenceTest.java b/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsFinancedPreferenceTest.java
index fe7b214..cefefde 100644
--- a/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsFinancedPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/PrivacySettingsFinancedPreferenceTest.java
@@ -18,8 +18,11 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import android.content.Context;
 import android.provider.SearchIndexableResource;
 
+import androidx.test.core.app.ApplicationProvider;
+
 import com.android.settings.R;
 import com.android.settingslib.core.AbstractPreferenceController;
 
@@ -31,14 +34,14 @@
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
-public class PrivacySettingsFinancedPreferenceTest extends BasePrivacySettingsPreferenceTest {
+public class PrivacySettingsFinancedPreferenceTest extends AbsBasePrivacySettingsPreference {
 
+    private Context mContext;
     private PrivacySettingsFinancedPreference mPrivacySettingsFinancedPreference;
 
-    @Override
     @Before
     public void setUp() {
-        super.setUp();
+        mContext = ApplicationProvider.getApplicationContext();
         mPrivacySettingsFinancedPreference = new PrivacySettingsFinancedPreference(mContext);
     }
 
