Replace `createMock(BuildableContext.class)` with `new FakeBuildableContext()`.

Summary: As promised, I am trying to address my abuse of mocks by replacing them with fakes.

Test Plan: Sandcastle builds.
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));
+  }
 }