diff --git a/README-tests.md b/README-tests.md
new file mode 100644
index 0000000..8351c6c
--- /dev/null
+++ b/README-tests.md
@@ -0,0 +1,7 @@
+# Running tests
+
+Use the following command to run the unit tests.
+
+```
+atest ContactsProviderTests ContactsProviderTests2
+```
\ No newline at end of file
diff --git a/run-all-tests.sh b/run-all-tests.sh
deleted file mode 100755
index 84a2ce3..0000000
--- a/run-all-tests.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-set -e
-
-cd $ANDROID_BUILD_TOP
-
-. build/envsetup.sh
-
-mmm -j32 packages/providers/ContactsProvider
-adb install -t -r -g $ANDROID_PRODUCT_OUT/system/priv-app/ContactsProvider/ContactsProvider.apk
-adb install -t -r -g $ANDROID_PRODUCT_OUT/data/app/ContactsProviderTests/ContactsProviderTests.apk
-adb install -t -r -g $ANDROID_PRODUCT_OUT/data/app/ContactsProviderTests2/ContactsProviderTests2.apk
-
-runtest() {
-    log=/tmp/$$.log
-    adb shell am instrument -w "${@}" |& tee $log
-    if grep -q FAILURES $log || ! grep -P -q 'OK \([1-9]' $log ; then
-        return 1
-    else
-        return 0
-    fi
-
-}
-
-runtest com.android.providers.contacts.tests
-runtest com.android.providers.contacts.tests2
\ No newline at end of file
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 15a90fa..9d20e76 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -36,14 +36,8 @@
         </service>
     </application>
 
-    <!--
-    The test declared in this instrumentation will be run along with tests declared by
-    all other applications via the command: "adb shell itr".
-    The "itr" command will find all tests declared by all applications. If you want to run just these
-    tests on their own then use the command:
-    "adb shell am instrument -w com.android.providers.contacts.tests/android.test.InstrumentationTestRunner"
-    -->
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
+    <instrumentation
+        android:name="android.support.test.runner.AndroidJUnitRunner"
         android:targetPackage="com.android.providers.contacts"
         android:label="Contacts Provider Tests">
     </instrumentation>
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
index 3c4a3ab..cdf0c7d 100644
--- a/tests/AndroidTest.xml
+++ b/tests/AndroidTest.xml
@@ -20,9 +20,8 @@
 
     <option name="test-suite-tag" value="apct" />
     <option name="test-tag" value="ContactsProviderTests" />
-    <test class="com.android.tradefed.testtype.InstrumentationTest" >
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="com.android.providers.contacts.tests" />
-        <option name="runner" value="android.test.InstrumentationTestRunner" />
         <option name="hidden-api-checks" value="false"/>
     </test>
 </configuration>
diff --git a/tests/src/com/android/providers/contacts/BaseDatabaseHelperUpgradeTest.java b/tests/src/com/android/providers/contacts/BaseDatabaseHelperUpgradeTest.java
index 0eb12ad..8498913 100644
--- a/tests/src/com/android/providers/contacts/BaseDatabaseHelperUpgradeTest.java
+++ b/tests/src/com/android/providers/contacts/BaseDatabaseHelperUpgradeTest.java
@@ -15,9 +15,10 @@
  */
 package com.android.providers.contacts;
 
+import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
-import android.test.AndroidTestCase;
+import android.support.test.InstrumentationRegistry;
 
 import junit.framework.AssertionFailedError;
 
@@ -29,7 +30,7 @@
  * Run the test like this: <code> runtest -c com.android.providers.contacts.BaseDatabaseHelperUpgradeTest
  * contactsprov </code>
  */
-public abstract class BaseDatabaseHelperUpgradeTest extends AndroidTestCase {
+public abstract class BaseDatabaseHelperUpgradeTest extends FixedAndroidTestCase {
 
     protected static final String INTEGER = "INTEGER";
     protected static final String TEXT = "TEXT";
diff --git a/tests/src/com/android/providers/contacts/CallLogInsertionHelperTest.java b/tests/src/com/android/providers/contacts/CallLogInsertionHelperTest.java
index 7bb88a8..6122ff0 100644
--- a/tests/src/com/android/providers/contacts/CallLogInsertionHelperTest.java
+++ b/tests/src/com/android/providers/contacts/CallLogInsertionHelperTest.java
@@ -19,12 +19,10 @@
 import android.content.ContentValues;
 import android.provider.CallLog.Calls;
 
-import android.test.AndroidTestCase;
-
 /**
  * Test cases for {@link com.android.providers.contacts.DefaultCallLogInsertionHelper}.
  */
-public class CallLogInsertionHelperTest extends AndroidTestCase {
+public class CallLogInsertionHelperTest extends FixedAndroidTestCase {
 
     /**
      * The default insertion helper under test.
diff --git a/tests/src/com/android/providers/contacts/CallLogMigrationTest.java b/tests/src/com/android/providers/contacts/CallLogMigrationTest.java
index 3cbecb8..767b62f 100644
--- a/tests/src/com/android/providers/contacts/CallLogMigrationTest.java
+++ b/tests/src/com/android/providers/contacts/CallLogMigrationTest.java
@@ -18,7 +18,6 @@
 import android.content.Context;
 import android.database.DatabaseUtils;
 import android.database.sqlite.SQLiteDatabase;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.LargeTest;
 
 import java.io.File;
@@ -28,7 +27,7 @@
 import java.io.OutputStream;
 
 @LargeTest
-public class CallLogMigrationTest extends AndroidTestCase {
+public class CallLogMigrationTest extends FixedAndroidTestCase {
 
     private void writeAssetFileToDisk(String assetName, File diskPath) throws IOException {
         final Context context = getTestContext();
diff --git a/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java b/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
index 8e71bef..a19a2f2 100644
--- a/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
+++ b/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
@@ -17,11 +17,8 @@
 package com.android.providers.contacts;
 
 import android.provider.ContactsContract.FullNameStyle;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
 
-import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -30,7 +27,7 @@
 import java.util.Locale;
 
 @SmallTest
-public class ContactLocaleUtilsTest extends AndroidTestCase {
+public class ContactLocaleUtilsTest extends FixedAndroidTestCase {
     private static final String TAG = "ContactLocaleUtilsTest";
 
     private static final String PHONE_NUMBER_1 = "+1 (650) 555-1212";
diff --git a/tests/src/com/android/providers/contacts/ContactsIcuTest.java b/tests/src/com/android/providers/contacts/ContactsIcuTest.java
index 16583ae..7d3bdcf 100644
--- a/tests/src/com/android/providers/contacts/ContactsIcuTest.java
+++ b/tests/src/com/android/providers/contacts/ContactsIcuTest.java
@@ -17,14 +17,13 @@
 
 import android.icu.text.AlphabeticIndex;
 import android.icu.text.AlphabeticIndex.ImmutableIndex;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.Suppress;
 import android.util.Log;
 
 import java.util.Arrays;
 import java.util.Locale;
 
-public class ContactsIcuTest extends AndroidTestCase {
+public class ContactsIcuTest extends FixedAndroidTestCase {
     private static final String TAG = "ContactsIcuTest";
 
     private static ImmutableIndex buildIndex(String... localeTags) {
diff --git a/tests/src/com/android/providers/contacts/ContactsTaskSchedulerTest.java b/tests/src/com/android/providers/contacts/ContactsTaskSchedulerTest.java
index df7196d..fe53c28 100644
--- a/tests/src/com/android/providers/contacts/ContactsTaskSchedulerTest.java
+++ b/tests/src/com/android/providers/contacts/ContactsTaskSchedulerTest.java
@@ -15,7 +15,6 @@
  */
 package com.android.providers.contacts;
 
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.LargeTest;
 
 import java.util.ArrayList;
@@ -25,7 +24,7 @@
 import java.util.concurrent.TimeUnit;
 
 @LargeTest
-public class ContactsTaskSchedulerTest extends AndroidTestCase {
+public class ContactsTaskSchedulerTest extends FixedAndroidTestCase {
     private static final int SHUTDOWN_SECONDS = 3;
 
     private static class MyContactsTaskScheduler extends ContactsTaskScheduler {
diff --git a/tests/src/com/android/providers/contacts/EnterpriseContactsCursorWrapperTest.java b/tests/src/com/android/providers/contacts/EnterpriseContactsCursorWrapperTest.java
index 66cebfc..7ae7b57 100644
--- a/tests/src/com/android/providers/contacts/EnterpriseContactsCursorWrapperTest.java
+++ b/tests/src/com/android/providers/contacts/EnterpriseContactsCursorWrapperTest.java
@@ -19,7 +19,6 @@
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.provider.ContactsContract.PhoneLookup;
-import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 import android.test.suitebuilder.annotation.SmallTest;
 
@@ -27,7 +26,7 @@
 
 
 @SmallTest
-public class EnterpriseContactsCursorWrapperTest extends AndroidTestCase {
+public class EnterpriseContactsCursorWrapperTest extends FixedAndroidTestCase {
 
     public void testWrappedResults() {
         final String[] projection = new String[] {
diff --git a/tests/src/com/android/providers/contacts/FastScrollingIndexCacheTest.java b/tests/src/com/android/providers/contacts/FastScrollingIndexCacheTest.java
index 4580ce1..08625cd 100644
--- a/tests/src/com/android/providers/contacts/FastScrollingIndexCacheTest.java
+++ b/tests/src/com/android/providers/contacts/FastScrollingIndexCacheTest.java
@@ -20,14 +20,13 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.RawContacts;
-import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.providers.contacts.util.MockSharedPreferences;
 
 @SmallTest
-public class FastScrollingIndexCacheTest extends AndroidTestCase {
+public class FastScrollingIndexCacheTest extends FixedAndroidTestCase {
     private MockSharedPreferences mPrefs;
     private FastScrollingIndexCache mCache;
 
diff --git a/tests/src/com/android/providers/contacts/FixedAndroidTestCase.java b/tests/src/com/android/providers/contacts/FixedAndroidTestCase.java
new file mode 100644
index 0000000..5254c5d
--- /dev/null
+++ b/tests/src/com/android/providers/contacts/FixedAndroidTestCase.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.providers.contacts;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.test.AndroidTestCase;
+
+/**
+ * {@link FixedAndroidTestCase#getTestContext} isn't set when executed on the support test runner. This
+ * class works around that.
+ */
+public class FixedAndroidTestCase extends AndroidTestCase {
+    @Override
+    public Context getTestContext() {
+        return InstrumentationRegistry.getContext();
+    }
+}
diff --git a/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java b/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java
index be4df57..fe6ed13 100644
--- a/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java
+++ b/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java
@@ -17,7 +17,6 @@
 package com.android.providers.contacts;
 
 import android.content.Context;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import com.android.providers.contacts.MetadataEntryParser.AggregationData;
 import com.android.providers.contacts.MetadataEntryParser.FieldData;
@@ -41,7 +40,7 @@
  * </code>
  */
 @SmallTest
-public class MetadataEntryParserTest extends AndroidTestCase {
+public class MetadataEntryParserTest extends FixedAndroidTestCase {
 
     public void testErrorForEmptyInput() {
         try {
diff --git a/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java b/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java
index cd86a42..d595580 100644
--- a/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java
+++ b/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java
@@ -16,12 +16,11 @@
 
 package com.android.providers.contacts;
 
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.test.suitebuilder.annotation.SmallTest;
 
 @LargeTest
-public class PhoneLookupWithStarPrefixTest extends AndroidTestCase {
+public class PhoneLookupWithStarPrefixTest extends FixedAndroidTestCase {
 
     @SmallTest
     public void testNormalizeNumberWithStar() {
diff --git a/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java b/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java
index 4b159a8..41fe1b0 100644
--- a/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java
+++ b/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java
@@ -16,8 +16,9 @@
 
 package com.android.providers.contacts;
 
+import android.content.Context;
 import android.content.res.Resources;
-import android.test.AndroidTestCase;
+import android.support.test.InstrumentationRegistry;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.google.android.collect.Maps;
@@ -31,7 +32,7 @@
  * Adds support for loading photo files easily from test resources.
  */
 @SmallTest
-public class PhotoLoadingTestCase extends AndroidTestCase {
+public class PhotoLoadingTestCase extends FixedAndroidTestCase {
 
     private Map<Integer, PhotoEntry> photoResourceCache = Maps.newHashMap();
     protected static enum PhotoSize {
diff --git a/tests/src/com/android/providers/contacts/PhotoPriorityResolverTest.java b/tests/src/com/android/providers/contacts/PhotoPriorityResolverTest.java
index b105595..a2dd81d 100644
--- a/tests/src/com/android/providers/contacts/PhotoPriorityResolverTest.java
+++ b/tests/src/com/android/providers/contacts/PhotoPriorityResolverTest.java
@@ -16,7 +16,6 @@
 
 package com.android.providers.contacts;
 
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
 /**
@@ -29,7 +28,7 @@
  * </code>
  */
 @MediumTest
-public class PhotoPriorityResolverTest extends AndroidTestCase {
+public class PhotoPriorityResolverTest extends FixedAndroidTestCase {
 
     public void testLoadPicturePriorityFromXml() {
         PhotoPriorityResolver resolver = new PhotoPriorityResolver(getContext());
diff --git a/tests/src/com/android/providers/contacts/PhotoProcessorTest.java b/tests/src/com/android/providers/contacts/PhotoProcessorTest.java
index 4b59be9..ab7b7fc 100644
--- a/tests/src/com/android/providers/contacts/PhotoProcessorTest.java
+++ b/tests/src/com/android/providers/contacts/PhotoProcessorTest.java
@@ -20,7 +20,6 @@
 import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.providers.contacts.tests.R;
@@ -34,7 +33,7 @@
  * Most of tests are covered by {@link PhotoStoreTest}.
  */
 @SmallTest
-public class PhotoProcessorTest extends AndroidTestCase {
+public class PhotoProcessorTest extends FixedAndroidTestCase {
 
     public void testTransparency() throws IOException {
         final Drawable source = getTestContext().getResources().getDrawable(
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index d20b9b3..155ed58 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -45,6 +45,8 @@
 import java.io.OutputStream;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Unit tests for {@link VoicemailContentProvider}.
@@ -749,18 +751,18 @@
             Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
         values.put(Status.SOURCE_TYPE,
             "vvm_type_test2");
-        Boolean[] observerTriggered = new Boolean[]{false};
+        final CountDownLatch latch = new CountDownLatch(1);
         mResolver.registerContentObserver(Status.CONTENT_URI, true,
-            new ContentObserver(new Handler()) {
+            new ContentObserver(null) {
                 @Override
                 public void onChange(boolean selfChange, Uri uri) {
-                    observerTriggered[0] = true;
+                    latch.countDown();
                 }
             });
 
         mResolver.update(uri, values, null, null);
 
-        assertTrue(observerTriggered[0]);
+        assertTrue("Observer didn't get notified", latch.await(5, TimeUnit.SECONDS));
     }
 
     public void testStatusUpsert() throws Exception {
diff --git a/tests/src/com/android/providers/contacts/aggregation/util/ContactMatcherTest.java b/tests/src/com/android/providers/contacts/aggregation/util/ContactMatcherTest.java
index 301902a..09a0b78 100644
--- a/tests/src/com/android/providers/contacts/aggregation/util/ContactMatcherTest.java
+++ b/tests/src/com/android/providers/contacts/aggregation/util/ContactMatcherTest.java
@@ -16,12 +16,12 @@
 package com.android.providers.contacts.aggregation.util;
 
 import com.android.providers.contacts.ContactsDatabaseHelper.NameLookupType;
+import com.android.providers.contacts.FixedAndroidTestCase;
 
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
 @SmallTest
-public class ContactMatcherTest extends AndroidTestCase {
+public class ContactMatcherTest extends FixedAndroidTestCase {
 
     public void testMatchName_invalidHexDecimal() {
         final ContactMatcher matcher = new ContactMatcher();
diff --git a/tests/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuardTest.java b/tests/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuardTest.java
index 99ff9a1..c068459 100644
--- a/tests/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuardTest.java
+++ b/tests/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuardTest.java
@@ -24,7 +24,6 @@
 import android.os.UserManager;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Directory;
-import android.test.AndroidTestCase;
 import android.test.mock.MockContext;
 import android.test.suitebuilder.annotation.SmallTest;
 
@@ -36,12 +35,14 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import com.android.providers.contacts.FixedAndroidTestCase;
+
 
 /**
  * Unit tests for {@link EnterprisePolicyGuard}.
  */
 @SmallTest
-public class EnterprisePolicyGuardTest extends AndroidTestCase {
+public class EnterprisePolicyGuardTest extends FixedAndroidTestCase {
     private static final String SYSTEM_PROPERTY_DEXMAKER_DEXCACHE = "dexmaker.dexcache";
 
     private static final int CONTACT_ID = 10;
diff --git a/tests/src/com/android/providers/contacts/sqlite/DatabaseAnalyzerTest.java b/tests/src/com/android/providers/contacts/sqlite/DatabaseAnalyzerTest.java
index 568e1e8..8367ef5 100644
--- a/tests/src/com/android/providers/contacts/sqlite/DatabaseAnalyzerTest.java
+++ b/tests/src/com/android/providers/contacts/sqlite/DatabaseAnalyzerTest.java
@@ -16,14 +16,14 @@
 
 package com.android.providers.contacts.sqlite;
 
-import android.test.AndroidTestCase;
 
 import com.android.providers.contacts.ContactsDatabaseHelper;
+import com.android.providers.contacts.FixedAndroidTestCase;
 import com.android.providers.contacts.TestUtils;
 
 import java.util.List;
 
-public class DatabaseAnalyzerTest extends AndroidTestCase {
+public class DatabaseAnalyzerTest extends FixedAndroidTestCase {
     public void testFindTableViewsAllowingColumns() {
         final ContactsDatabaseHelper dbh =
                 ContactsDatabaseHelper.getNewInstanceForTest(getContext(),
diff --git a/tests/src/com/android/providers/contacts/sqlite/SqlCheckerTest.java b/tests/src/com/android/providers/contacts/sqlite/SqlCheckerTest.java
index ee2b5be..b69b427 100644
--- a/tests/src/com/android/providers/contacts/sqlite/SqlCheckerTest.java
+++ b/tests/src/com/android/providers/contacts/sqlite/SqlCheckerTest.java
@@ -15,16 +15,16 @@
  */
 package com.android.providers.contacts.sqlite;
 
-import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 
+import com.android.providers.contacts.FixedAndroidTestCase;
 import com.android.providers.contacts.sqlite.SqlChecker.InvalidSqlException;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-public class SqlCheckerTest extends AndroidTestCase {
+public class SqlCheckerTest extends FixedAndroidTestCase {
     private ArrayList<String> getTokens(String sql) {
         final ArrayList<String> tokens = new ArrayList<>();
 
diff --git a/tests/src/com/android/providers/contacts/util/SelectionBuilderTest.java b/tests/src/com/android/providers/contacts/util/SelectionBuilderTest.java
index 7adbeca..4615fbd 100644
--- a/tests/src/com/android/providers/contacts/util/SelectionBuilderTest.java
+++ b/tests/src/com/android/providers/contacts/util/SelectionBuilderTest.java
@@ -16,14 +16,15 @@
 
 package com.android.providers.contacts.util;
 
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
+import com.android.providers.contacts.FixedAndroidTestCase;
+
 /**
  * Unit tests for {@link SelectionBuilder}.
  */
 @SmallTest
-public class SelectionBuilderTest extends AndroidTestCase {
+public class SelectionBuilderTest extends FixedAndroidTestCase {
     public void testEmptyClauses() {
         assertEquals(null, new SelectionBuilder(null).build());
         assertEquals(null, new SelectionBuilder("").build());
diff --git a/tests/src/com/android/providers/contacts/util/TypedUriMatcherImplTest.java b/tests/src/com/android/providers/contacts/util/TypedUriMatcherImplTest.java
index 329e6e2..d2a7b14 100644
--- a/tests/src/com/android/providers/contacts/util/TypedUriMatcherImplTest.java
+++ b/tests/src/com/android/providers/contacts/util/TypedUriMatcherImplTest.java
@@ -17,9 +17,10 @@
 package com.android.providers.contacts.util;
 
 import android.net.Uri;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
+import com.android.providers.contacts.FixedAndroidTestCase;
+
 /**
  * Unit tests for {@link TypedUriMatcherImpl}.
  * Run the test like this:
@@ -28,7 +29,7 @@
  * </code>
  */
 @SmallTest
-public class TypedUriMatcherImplTest extends AndroidTestCase {
+public class TypedUriMatcherImplTest extends FixedAndroidTestCase {
     /** URI type used for testing. */
     private static enum TestUriType implements UriType {
         NO_MATCH(null),
diff --git a/tests/src/com/android/providers/contacts/util/UserUtilsTest.java b/tests/src/com/android/providers/contacts/util/UserUtilsTest.java
index 611ad3f..93613cf 100644
--- a/tests/src/com/android/providers/contacts/util/UserUtilsTest.java
+++ b/tests/src/com/android/providers/contacts/util/UserUtilsTest.java
@@ -15,21 +15,19 @@
  */
 package com.android.providers.contacts.util;
 
-import com.android.providers.contacts.ContactsActor;
-import com.android.providers.contacts.ContactsActor.MockUserManager;
-import com.android.providers.contacts.SynchronousContactsProvider2;
-
-import android.content.ContentProvider;
-import android.content.Context;
-import android.os.UserManager;
-import android.provider.ContactsContract;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
 import static com.android.providers.contacts.ContactsActor.PACKAGE_GREY;
 
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.providers.contacts.ContactsActor;
+import com.android.providers.contacts.ContactsActor.MockUserManager;
+import com.android.providers.contacts.FixedAndroidTestCase;
+import com.android.providers.contacts.SynchronousContactsProvider2;
+
 @SmallTest
-public class UserUtilsTest extends AndroidTestCase {
+public class UserUtilsTest extends FixedAndroidTestCase {
 
     protected ContactsActor mActor;
 
diff --git a/tests2/AndroidTest.xml b/tests2/AndroidTest.xml
index 29fdc83..957350b 100644
--- a/tests2/AndroidTest.xml
+++ b/tests2/AndroidTest.xml
@@ -20,9 +20,8 @@
 
     <option name="test-suite-tag" value="apct" />
     <option name="test-tag" value="ContactsProviderTests2" />
-    <test class="com.android.tradefed.testtype.InstrumentationTest" >
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="com.android.providers.contacts.tests2" />
-        <option name="runner" value="android.support.test.runner.AndroidJUnitRunner" />
         <option name="hidden-api-checks" value="false"/>
     </test>
 </configuration>
