diff --git a/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java b/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java
index 9862b8de..04572f5 100644
--- a/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java
+++ b/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java
@@ -166,18 +166,15 @@
                     getTestAppFilePath(TARGET_INSTRUMENT_APK), false);
             assertNull("failed to install target instrumentation app", installResult);
 
-            // the app will install, but will get error at runtime
+            // the app will install, but will get error at runtime when starting instrumentation
             installResult = getDevice().installPackage(getTestAppFilePath(INSTRUMENT_DIFF_CERT_APK),
                     false);
             assertNull("failed to install instrumentation app with diff cert", installResult);
-            // run INSTRUMENT_DIFF_CERT_PKG tests - expect the test run to fail
-            String runResults = runDeviceTestsWithRunResult(INSTRUMENT_DIFF_CERT_PKG);
-            assertNotNull("running instrumentation with diff cert unexpectedly succeeded",
-                    runResults);
-            String msg = String.format("Unexpected error message result from %s. Received %s",
-                    "instrumentation with diff cert. Expected starts with Permission Denial",
-                    runResults);
-            assertTrue(msg, runResults.startsWith("Permission Denial"));
+            // run INSTRUMENT_DIFF_CERT_PKG tests
+            // this test will attempt to call startInstrumentation directly and verify
+            // SecurityException is thrown 
+            assertTrue("running instrumentation with diff cert unexpectedly succeeded",
+                    runDeviceTests(INSTRUMENT_DIFF_CERT_PKG));
         }
         finally {
             getDevice().uninstallPackage(TARGET_INSTRUMENT_PKG);
@@ -246,17 +243,6 @@
         return listener;
     }
 
-    /**
-     * Helper method to run the specified packages tests, and return the test run error message.
-     *
-     * @param pkgName Android application package for tests
-     * @return the test run error message or <code>null</code> if test run completed.
-     */
-    private String runDeviceTestsWithRunResult(String pkgName) {
-        CollectingTestRunListener listener = doRunTests(pkgName);
-        return listener.getTestRunErrorMessage();
-    }
-
     private static class CollectingTestRunListener implements ITestRunListener {
 
         private boolean mAllTestsPassed = true;
diff --git a/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml b/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml
index e62f968..8102656 100644
--- a/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml
+++ b/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml
@@ -26,7 +26,15 @@
     </application>
 
     <!-- assumes com.android.cts.targetinstrumentationapp is signed with diff cert -->
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
+    <instrumentation android:name="android.app.Instrumentation"
                      android:targetPackage="com.android.cts.targetinstrumentationapp"
+                     android:label="Instrumentation that targets app with different cert" />
+
+    <!--
+    A self-instrumenting test runner, that will try to start the above instrumentation and
+    verify it fails.
+     -->
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+                     android:targetPackage="com.android.cts.instrumentationdiffcertapp"
                      android:label="Test for instrumentation with different cert" />
 </manifest>
diff --git a/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java b/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java
index bd5de8c..9c320d9 100644
--- a/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java
+++ b/tests/appsecurity-tests/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java
@@ -16,17 +16,29 @@
 
 package com.android.cts.instrumentationdiffcertapp;
 
-import junit.framework.TestCase;
+import android.app.Instrumentation;
+import android.content.ComponentName;
+import android.content.Context;
+import android.os.Bundle;
+import android.test.InstrumentationTestCase;
 
 /**
- * Test that is expected not to run
+ * Test that a instrumentation targeting another app with a different cert fails.
  */
-public class InstrumentationFailToRunTest extends TestCase {
+public class InstrumentationFailToRunTest extends InstrumentationTestCase {
 
-    /**
-     * Test method that is expected not to run.
-     */
     public void testInstrumentationNotAllowed() {
-        fail("instrumentating app with different cert should fail");
+        Context myContext = getInstrumentation().getContext();
+        // assumes android.app.Instrumentation has been defined in this app's AndroidManifest.xml
+        // as targeting an app with a different cert
+        ComponentName appDiffCertInstrumentation = new ComponentName(myContext,
+                Instrumentation.class);
+        try {
+            getInstrumentation().getContext().startInstrumentation(appDiffCertInstrumentation,
+                null, new Bundle());
+            fail("could launch instrumentation");
+        } catch (SecurityException e) {
+            // expected
+        }
     }
 }
