diff --git a/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java b/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java
index 4d2f5bf..84e62f6 100644
--- a/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java
+++ b/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java
@@ -27,7 +27,7 @@
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.rules.AbiRule;
 import com.facebook.buck.rules.BuildContext;
-import com.facebook.buck.rules.BuildableContext;
+import com.facebook.buck.rules.FakeBuildableContext;
 import com.facebook.buck.rules.Sha1HashCode;
 import com.facebook.buck.step.ExecutionContext;
 import com.facebook.buck.step.Step;
@@ -62,7 +62,7 @@
     expect(accumulateClassNames.getJavaLibraryRule()).andReturn(javaLibraryRule);
 
     BuildContext context = createMock(BuildContext.class);
-    BuildableContext buildableContext = createMock(BuildableContext.class);
+    FakeBuildableContext buildableContext = new FakeBuildableContext();
 
     replayAll();
 
@@ -107,16 +107,19 @@
     verifyAll();
     resetAll();
 
-    buildableContext.recordArtifact(Paths.get("bar.dex.jar"));
     Sha1HashCode abiKey = new Sha1HashCode("f7f34ed13b881c6c6f663533cde4a436ea84435e");
     expect(accumulateClassNames.getAbiKey()).andReturn(abiKey);
-    buildableContext.addMetadata(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA, abiKey.getHash());
-    buildableContext.addMetadata(AbiRule.ABI_KEY_ON_DISK_METADATA, abiKey.getHash());
     replayAll();
 
     Step recordArtifactAndMetadataStep = steps.get(3);
     int exitCode = recordArtifactAndMetadataStep.execute(executionContext);
     assertEquals(0, exitCode);
+    assertTrue("The generated .dex.jar file should be in the set of recorded artifacts.",
+        buildableContext.getRecordedArtifacts().contains(Paths.get("bar.dex.jar")));
+    buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA,
+        abiKey.getHash());
+    buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
+        abiKey.getHash());
 
     verifyAll();
   }
@@ -128,7 +131,7 @@
         ImmutableSortedMap.<String, HashCode>of());
 
     BuildContext context = createMock(BuildContext.class);
-    BuildableContext buildableContext = createMock(BuildableContext.class);
+    FakeBuildableContext buildableContext = new FakeBuildableContext();
 
     replayAll();
 
@@ -165,13 +168,15 @@
 
     Sha1HashCode abiKey = new Sha1HashCode(AbiWriterProtocol.EMPTY_ABI_KEY);
     expect(accumulateClassNames.getAbiKey()).andReturn(abiKey);
-    buildableContext.addMetadata(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA, abiKey.getHash());
-    buildableContext.addMetadata(AbiRule.ABI_KEY_ON_DISK_METADATA, abiKey.getHash());
     replayAll();
 
     Step recordArtifactAndMetadataStep = steps.get(2);
     int exitCode = recordArtifactAndMetadataStep.execute(executionContext);
     assertEquals(0, exitCode);
+    buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA,
+        abiKey.getHash());
+    buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
+        abiKey.getHash());
 
     verifyAll();
   }
diff --git a/test/com/facebook/buck/java/AccumulateClassNamesTest.java b/test/com/facebook/buck/java/AccumulateClassNamesTest.java
index 9c1dbcf..1a20f62 100644
--- a/test/com/facebook/buck/java/AccumulateClassNamesTest.java
+++ b/test/com/facebook/buck/java/AccumulateClassNamesTest.java
@@ -28,8 +28,8 @@
 import com.facebook.buck.rules.BuildRule;
 import com.facebook.buck.rules.BuildRuleResolver;
 import com.facebook.buck.rules.BuildRuleType;
-import com.facebook.buck.rules.BuildableContext;
 import com.facebook.buck.rules.FakeAbstractBuildRuleBuilderParams;
+import com.facebook.buck.rules.FakeBuildableContext;
 import com.facebook.buck.rules.OnDiskBuildInfo;
 import com.facebook.buck.rules.Sha1HashCode;
 import com.facebook.buck.step.ExecutionContext;
@@ -88,7 +88,7 @@
 
     // Mock out objects so getBuildSteps() can be invoked.
     BuildContext buildContext = createMock(BuildContext.class);
-    BuildableContext buildableContext = createMock(BuildableContext.class);
+    FakeBuildableContext buildableContext = new FakeBuildableContext();
 
     // Create the build steps.
     replayAll();
@@ -119,20 +119,16 @@
     ImmutableSortedMap<String, HashCode> classNames = ImmutableSortedMap.of();
     accumulateClassNamesStep.setClassNamesForTesting(classNames);
 
-    resetAll();
-    String expectedAbiKey = AbiWriterProtocol.EMPTY_ABI_KEY;
-    buildableContext.addMetadata(AbiRule.ABI_KEY_ON_DISK_METADATA, expectedAbiKey);
-    replayAll();
-
     // Invoke the recordAbiStep and ensure the correct data is recorded.
     Step recordAbiStep = steps.get(3);
     int exitCode = recordAbiStep.execute(context);
+    String expectedAbiKey = AbiWriterProtocol.EMPTY_ABI_KEY;
+    buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
+        expectedAbiKey);
     assertEquals(0, exitCode);
     assertEquals("Should be the empty ABI key because the classNames map is empty.",
         new Sha1HashCode(expectedAbiKey),
         accumulateClassNames.getAbiKey());
-
-    verifyAll();
   }
 
   @Test
diff --git a/test/com/facebook/buck/rules/BUCK b/test/com/facebook/buck/rules/BUCK
index 7ee4b12..160c7e5 100644
--- a/test/com/facebook/buck/rules/BUCK
+++ b/test/com/facebook/buck/rules/BUCK
@@ -14,6 +14,7 @@
   deps = [
     '//lib:guava',
     '//lib:jsr305',
+    '//lib:junit',
     '//src/com/facebook/buck/model:model',
     '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
diff --git a/test/com/facebook/buck/rules/FakeBuildableContext.java b/test/com/facebook/buck/rules/FakeBuildableContext.java
index 1a90c48..f932fbf 100644
--- a/test/com/facebook/buck/rules/FakeBuildableContext.java
+++ b/test/com/facebook/buck/rules/FakeBuildableContext.java
@@ -16,6 +16,10 @@
 
 package com.facebook.buck.rules;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
@@ -58,4 +62,11 @@
   public ImmutableSet<Path> getRecordedArtifacts() {
     return ImmutableSet.copyOf(artifacts);
   }
+
+  public void assertContainsMetadataMapping(String key, String value) {
+    assertNotNull(key);
+    assertNotNull(value);
+    assertTrue(metadata.containsKey(key));
+    assertEquals(value, metadata.get(key));
+  }
 }
