diff --git a/src/test/java/com/google/devtools/build/lib/events/LocationTest.java b/src/test/java/com/google/devtools/build/lib/events/LocationTest.java
index 2b32a63..17c95b0 100644
--- a/src/test/java/com/google/devtools/build/lib/events/LocationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/events/LocationTest.java
@@ -15,7 +15,7 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -57,11 +57,10 @@
 
   @Test
   public void testCodec() throws Exception {
-    ObjectCodecTester.newBuilder(Location.CODEC)
-        .addSubjects(
+    new SerializationTester(
             Location.fromPathFragment(path),
             Location.fromPathAndStartColumn(path, 0, 100, new Location.LineAndColumn(20, 25)),
             Location.BUILTIN)
-        .buildAndRunTests();
+        .runTests();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index e63d1ea..ce60452 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -65,7 +65,7 @@
 import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
 import com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.ActionCompletedReceiver;
 import com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.ProgressSupplier;
-import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -492,10 +492,9 @@
     }
   }
 
-  private static class SingletonActionLookupKey extends ActionLookupValue.ActionLookupKey {
-
-    public static final SingletonCodec<SingletonActionLookupKey> CODEC =
-        SingletonCodec.of(new SingletonActionLookupKey(), "none");
+  @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON)
+  static class SingletonActionLookupKey extends ActionLookupValue.ActionLookupKey {
+    public static final SingletonActionLookupKey INSTANCE = new SingletonActionLookupKey();
 
     @Override
     public SkyFunctionName functionName() {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
index c07d44b..9d2df74 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.events.EventKind;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.events.Reporter;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -498,8 +498,6 @@
 
   @Test
   public void testLexerLocationCodec() throws Exception {
-    ObjectCodecTester.newBuilder(Location.CODEC)
-        .addSubjects(createLexer("foo").createLocation(0, 2))
-        .buildAndRunTests();
+    new SerializationTester(createLexer("foo").createLocation(0, 2)).runTests();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java
index e3269f6..3488047 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java
@@ -17,7 +17,7 @@
 import static org.hamcrest.CoreMatchers.startsWith;
 
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
 import com.google.devtools.build.lib.syntax.SkylarkImports.SkylarkImportSyntaxException;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import org.junit.Rule;
@@ -232,12 +232,11 @@
 
   @Test
   public void serialization() throws Exception {
-    ObjectCodecTester.newBuilder(SkylarkImport.CODEC)
-        .addSubjects(
+    new SerializationTester(
             SkylarkImports.create("//some/skylark:file.bzl"),
             SkylarkImports.create("/some/skylark/file"),
             SkylarkImports.create(":subdirectory/containing/file.bzl"),
             SkylarkImports.create("file"))
-        .buildAndRunTests();
+        .runTests();
   }
 }
