diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index c7fcdcc..f17359d 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -1141,8 +1141,13 @@
   }
 
   public static void runDex2Oat(Path file, Path outFile) throws IOException {
-    // TODO(b/79191363): Support running dex2oat for past android versions.
-    runDex2Oat(file, outFile, DexVm.ART_DEFAULT);
+    DexVm vm = getDexVm();
+    if (vm.isOlderThanOrEqual(DexVm.ART_5_1_1_HOST)) {
+      // TODO(b/79191363): Support running dex2oat for past android versions.
+      // Run default dex2oat for tests on old runtimes.
+      vm = DexVm.ART_DEFAULT;
+    }
+    runDex2Oat(file, outFile, vm);
   }
 
   public static void runDex2Oat(Path file, Path outFile, DexVm vm) throws IOException {
diff --git a/src/test/java/com/android/tools/r8/internal/D8Framework14082017DesugaredVerificationTest.java b/src/test/java/com/android/tools/r8/internal/D8Framework14082017DesugaredVerificationTest.java
index ff34444..003b6eb 100644
--- a/src/test/java/com/android/tools/r8/internal/D8Framework14082017DesugaredVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/D8Framework14082017DesugaredVerificationTest.java
@@ -5,14 +5,21 @@
 
 import com.android.tools.r8.CompilationMode;
 import com.android.tools.r8.D8Command;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.VmTestRunner;
+import com.android.tools.r8.VmTestRunner.IgnoreIfVmOlderThan;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import java.nio.file.Paths;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 
+@RunWith(VmTestRunner.class)
 public class D8Framework14082017DesugaredVerificationTest extends CompilationTestBase {
-  private static final int MIN_SDK = 24;
+  private static final int MIN_SDK = AndroidApiLevel.N.getLevel();
   private static final String JAR = "third_party/framework/framework_14082017_desugared.jar";
 
   @Test
+  @IgnoreIfVmOlderThan(Version.V7_0_0)
   public void verifyDebugBuild() throws Exception {
     runAndCheckVerification(
         D8Command.builder()
@@ -23,6 +30,7 @@
   }
 
   @Test
+  @IgnoreIfVmOlderThan(Version.V7_0_0)
   public void verifyReleaseBuild() throws Exception {
     runAndCheckVerification(
         D8Command.builder()
diff --git a/src/test/java/com/android/tools/r8/internal/D8Framework14082017VerificationTest.java b/src/test/java/com/android/tools/r8/internal/D8Framework14082017VerificationTest.java
index f4ec74e..6dbb356 100644
--- a/src/test/java/com/android/tools/r8/internal/D8Framework14082017VerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/D8Framework14082017VerificationTest.java
@@ -5,14 +5,21 @@
 
 import com.android.tools.r8.CompilationMode;
 import com.android.tools.r8.D8Command;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.VmTestRunner;
+import com.android.tools.r8.VmTestRunner.IgnoreIfVmOlderThan;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import java.nio.file.Paths;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 
+@RunWith(VmTestRunner.class)
 public class D8Framework14082017VerificationTest extends CompilationTestBase {
-  private static final int MIN_SDK = 24;
+  private static final int MIN_SDK = AndroidApiLevel.N.getLevel();
   private static final String JAR = "third_party/framework/framework_14082017.jar";
 
   @Test
+  @IgnoreIfVmOlderThan(Version.V7_0_0)
   public void verifyDebugBuild() throws Exception {
     runAndCheckVerification(
         D8Command.builder()
@@ -23,6 +30,7 @@
   }
 
   @Test
+  @IgnoreIfVmOlderThan(Version.V7_0_0)
   public void verifyReleaseBuild() throws Exception {
     runAndCheckVerification(
         D8Command.builder()
diff --git a/src/test/java/com/android/tools/r8/internal/D8FrameworkVerificationTest.java b/src/test/java/com/android/tools/r8/internal/D8FrameworkVerificationTest.java
index 1396281..f330553 100644
--- a/src/test/java/com/android/tools/r8/internal/D8FrameworkVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/D8FrameworkVerificationTest.java
@@ -5,14 +5,21 @@
 
 import com.android.tools.r8.CompilationMode;
 import com.android.tools.r8.D8Command;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.VmTestRunner;
+import com.android.tools.r8.VmTestRunner.IgnoreIfVmOlderThan;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import java.nio.file.Paths;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 
+@RunWith(VmTestRunner.class)
 public class D8FrameworkVerificationTest extends CompilationTestBase {
-  private static final int MIN_SDK = 24;
+  private static final int MIN_SDK = AndroidApiLevel.N.getLevel();
   private static final String JAR = "third_party/framework/framework_160115954.jar";
 
   @Test
+  @IgnoreIfVmOlderThan(Version.V7_0_0)
   public void verifyDebugBuild() throws Exception {
     runAndCheckVerification(
         D8Command.builder()
@@ -23,6 +30,7 @@
   }
 
   @Test
+  @IgnoreIfVmOlderThan(Version.V7_0_0)
   public void verifyReleaseBuild() throws Exception {
     runAndCheckVerification(
         D8Command.builder()
