diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index ad9d10d..4b805e6 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -185,6 +185,11 @@
     useConfiguration();
   }
 
+  /** To be overriden by sub classes if they want to disable loading. */
+  protected boolean isLoadingEnabled() {
+    return true;
+  }
+
   protected ImmutableList<PrecomputedValue.Injected> getPrecomputedValues() {
     return ImmutableList.of();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 3376a21..f65452a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -226,6 +226,11 @@
     ResourceManager.instance().setAvailableResources(getStartingResources());
   }
 
+  /** To be overriden by sub classes if they want to disable loading. */
+  protected boolean isLoadingEnabled() {
+    return true;
+  }
+
   protected AnalysisMock getAnalysisMock() {
     try {
       Class<?> providerClass = Class.forName(TestConstants.TEST_ANALYSIS_MOCK);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ParallelBuilderTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ParallelBuilderTest.java
index 4491682..d06a544 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ParallelBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ParallelBuilderTest.java
@@ -36,7 +36,6 @@
 import com.google.devtools.build.lib.actions.LocalHostCapacity;
 import com.google.devtools.build.lib.actions.ResourceManager;
 import com.google.devtools.build.lib.actions.ResourceSet;
-import com.google.devtools.build.lib.actions.TestExecException;
 import com.google.devtools.build.lib.actions.cache.ActionCache;
 import com.google.devtools.build.lib.actions.util.TestAction;
 import com.google.devtools.build.lib.events.Event;
@@ -47,7 +46,6 @@
 import com.google.devtools.build.lib.testutil.Suite;
 import com.google.devtools.build.lib.testutil.TestSpec;
 import com.google.devtools.build.lib.testutil.TestUtils;
-import com.google.devtools.build.lib.util.AbruptExitException;
 import com.google.devtools.build.lib.vfs.FileStatus;
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -102,13 +100,11 @@
     return Sets.newHashSet(elements);
   }
 
-  protected void buildArtifacts(Artifact... artifacts)
-      throws BuildFailedException, AbruptExitException,
-      InterruptedException, TestExecException {
+  protected void buildArtifacts(Artifact... artifacts) throws Exception {
     buildArtifacts(createBuilder(DEFAULT_NUM_JOBS, false), artifacts);
   }
 
-  private Builder createBuilder(int jobs, boolean keepGoing) {
+  private Builder createBuilder(int jobs, boolean keepGoing) throws Exception {
     return createBuilder(cache, jobs, keepGoing);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderMediumTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderMediumTest.java
index 131d413..dba91d6 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderMediumTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderMediumTest.java
@@ -63,7 +63,7 @@
   /**
    * Creates and returns a new caching builder based on a given {@code cache}.
    */
-  private Builder persistentBuilder(CompactPersistentActionCache cache) {
+  private Builder persistentBuilder(CompactPersistentActionCache cache) throws Exception {
     return createBuilder(cache);
   }
 
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 894c53c..e1d2b5e 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
@@ -119,7 +119,7 @@
     return action;
   }
 
-  protected Builder createBuilder(ActionCache actionCache) {
+  protected Builder createBuilder(ActionCache actionCache) throws Exception {
     return createBuilder(actionCache, 1, /*keepGoing=*/ false);
   }
 
@@ -128,7 +128,7 @@
    * specified ActionCache.
    */
   protected Builder createBuilder(
-      final ActionCache actionCache, final int threadCount, final boolean keepGoing) {
+      ActionCache actionCache, final int threadCount, final boolean keepGoing) throws Exception {
     return createBuilder(actionCache, threadCount, keepGoing, null);
   }
 
@@ -136,7 +136,7 @@
       final ActionCache actionCache,
       final int threadCount,
       final boolean keepGoing,
-      @Nullable EvaluationProgressReceiver evaluationProgressReceiver) {
+      @Nullable EvaluationProgressReceiver evaluationProgressReceiver) throws Exception {
     AtomicReference<PathPackageLocator> pkgLocator =
         new AtomicReference<>(new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory)));
     AtomicReference<TimestampGranularityMonitor> tsgmRef = new AtomicReference<>(tsgm);
@@ -151,6 +151,7 @@
         new SkyframeActionExecutor(
             ResourceManager.instance(), eventBusRef, new AtomicReference<>(statusReporter));
 
+    Path actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/");
     skyframeActionExecutor.setActionLogBufferPathGenerator(
         new ActionLogBufferPathGenerator(actionOutputBase));
 
@@ -289,14 +290,14 @@
   /**
    * Creates and returns a new "amnesiac" builder based on the amnesiac cache.
    */
-  protected Builder amnesiacBuilder() {
+  protected Builder amnesiacBuilder() throws Exception {
     return createBuilder(AMNESIAC_CACHE);
   }
 
   /**
    * Creates and returns a new caching builder based on the inMemoryCache.
    */
-  protected Builder cachingBuilder() {
+  protected Builder cachingBuilder() throws Exception {
     return createBuilder(inMemoryCache);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
index 4c1a6713..7304462 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
@@ -35,14 +35,11 @@
 import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
 import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType;
 import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact;
-import com.google.devtools.build.lib.actions.BuildFailedException;
 import com.google.devtools.build.lib.actions.Root;
-import com.google.devtools.build.lib.actions.TestExecException;
 import com.google.devtools.build.lib.actions.cache.InjectedStat;
 import com.google.devtools.build.lib.actions.cache.MetadataHandler;
 import com.google.devtools.build.lib.actions.util.TestAction;
 import com.google.devtools.build.lib.testutil.TestUtils;
-import com.google.devtools.build.lib.util.AbruptExitException;
 import com.google.devtools.build.lib.vfs.FileStatus;
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -732,8 +729,7 @@
         SpecialArtifactType.TREE);
   }
 
-  private void buildArtifact(Artifact artifact)
-      throws InterruptedException, BuildFailedException, TestExecException, AbruptExitException {
+  private void buildArtifact(Artifact artifact) throws Exception {
     buildArtifacts(cachingBuilder(), artifact);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
index 02b3619..689b822 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
@@ -34,13 +34,9 @@
  * A helper class for implementing tests of the "foundation" library.
  */
 public abstract class FoundationTestCase {
-
   protected Path rootDirectory;
-
   protected Path outputBase;
 
-  protected Path actionOutputBase;
-
   // May be overridden by subclasses:
   protected Reporter reporter;
   protected EventCollector eventCollector;
@@ -70,7 +66,6 @@
     outputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/");
     rootDirectory = scratch.dir("/workspace");
     scratch.file(rootDirectory.getRelative("WORKSPACE").getPathString());
-    actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/");
   }
 
   @Before
@@ -86,11 +81,6 @@
                           // so that we don't cause later tests to fail.
   }
 
-  // To be overriden by sub classes if they want to disable loading.
-  protected boolean isLoadingEnabled() {
-    return true;
-  }
-
   /**
    * Creates the file system; override to inject FS behavior.
    */
