diff --git a/src/test/java/com/android/tools/r8/naming/retrace/InliningRetraceTest.java b/src/test/java/com/android/tools/r8/naming/retrace/InliningRetraceTest.java
index 48fc320..5562395 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/InliningRetraceTest.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/InliningRetraceTest.java
@@ -13,8 +13,10 @@
 
 import com.android.tools.r8.CompilationMode;
 import com.android.tools.r8.ForceInline;
+import com.android.tools.r8.R8TestBuilder;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.utils.BooleanUtils;
+import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import org.junit.Test;
@@ -77,6 +79,18 @@
           assertEquals(expectedActualStackTraceHeight(), actualStackTrace.size());
         });
   }
+
+  @Override
+  public void configure(R8TestBuilder<?> builder) {
+    builder.applyIf(mode == CompilationMode.RELEASE, R8TestBuilder::enableForceInliningAnnotations);
+  }
+
+  @Override
+  public void inspect(CodeInspector inspector) {
+    if (mode == CompilationMode.RELEASE) {
+      assertEquals(compat ? 2 : 1, inspector.clazz(Main.class).allMethods().size());
+    }
+  }
 }
 
 class Main {
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/RetraceTestBase.java b/src/test/java/com/android/tools/r8/naming/retrace/RetraceTestBase.java
index adc5cb8..b4b90a4 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/RetraceTestBase.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/RetraceTestBase.java
@@ -9,6 +9,8 @@
 import com.android.tools.r8.R8TestRunResult;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestRuntime.CfRuntime;
+import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import java.util.List;
@@ -28,7 +30,9 @@
 
   public StackTrace expectedStackTrace;
 
-  public void configure(R8TestBuilder builder) {}
+  public void configure(R8TestBuilder<?> builder) {}
+
+  public void inspect(CodeInspector inspector) {}
 
   public Collection<Class<?>> getClasses() {
     return ImmutableList.of(getMainClass());
@@ -42,7 +46,7 @@
     expectedStackTrace =
         testForJvm()
             .addTestClasspath()
-            .run(getMainClass())
+            .run(CfRuntime.getSystemRuntime(), getMainClass())
             .assertFailure()
             .map(StackTrace::extractFromJvm);
   }
@@ -53,12 +57,13 @@
     R8TestRunResult result =
         (compat ? testForR8Compat(parameters.getBackend()) : testForR8(parameters.getBackend()))
             .setMode(mode)
-            .enableProguardTestOptions()
             .addProgramClasses(getClasses())
             .addKeepMainRule(getMainClass())
             .addKeepRules(keepRules)
             .apply(this::configure)
             .setMinApi(parameters.getApiLevel())
+            .compile()
+            .inspect(this::inspect)
             .run(parameters.getRuntime(), getMainClass())
             .assertFailure();
 
