Migrate most of the assertions to Truth that the auto-migration tool did not catch.

IntelliJ's "replace structurally" command was surprisingly useful.

RELNOTES: None.
PiperOrigin-RevId: 157463734
diff --git a/src/test/java/com/google/devtools/build/android/DensitySpecificManifestProcessorTest.java b/src/test/java/com/google/devtools/build/android/DensitySpecificManifestProcessorTest.java
index b62717d..fca649b 100644
--- a/src/test/java/com/google/devtools/build/android/DensitySpecificManifestProcessorTest.java
+++ b/src/test/java/com/google/devtools/build/android/DensitySpecificManifestProcessorTest.java
@@ -16,8 +16,6 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.android.DensitySpecificManifestProcessor.PLAY_STORE_SUPPORTED_DENSITIES;
 import static com.google.devtools.build.android.DensitySpecificManifestProcessor.SCREEN_SIZES;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Joiner;
@@ -58,7 +56,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(ImmutableList.<String>of(),
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertEquals(manifest, modified);
+    assertThat((Object) modified).isEqualTo(manifest);
   }
 
   @Test public void testSingleDensity() throws Exception {
@@ -69,7 +67,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(densities,
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertNotNull(modified);
+    assertThat((Object) modified).isNotNull();
     checkModification(modified, densities);
   }
   
@@ -81,7 +79,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(densities,
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertNotNull(modified);
+    assertThat((Object) modified).isNotNull();
     checkModification(modified, densities);
   }
 
@@ -93,7 +91,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(densities,
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertNotNull(modified);
+    assertThat((Object) modified).isNotNull();
     checkModification(modified, densities);
   }
 
@@ -105,7 +103,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(densities,
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertNotNull(modified);
+    assertThat((Object) modified).isNotNull();
     checkCompatibleScreensOmitted(modified);
   }
 
@@ -119,7 +117,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(densities,
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertNotNull(modified);
+    assertThat((Object) modified).isNotNull();
     checkModification(modified, densities);
   }
 
@@ -141,7 +139,7 @@
         "</manifest>");
     Path modified = new DensitySpecificManifestProcessor(densities,
         tmp.resolve("manifest-filtered/AndroidManifest.xml")).process(manifest);
-    assertNotNull(modified);
+    assertThat((Object) modified).isNotNull();
     checkModification(modified, ImmutableList.<String>of("ldpi", "xxhdpi"));
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java
index dfcca3d..dc1a690 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.bazel.repository.cache;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.base.Strings;
 import com.google.devtools.build.lib.bazel.repository.cache.RepositoryCache.KeyType;
@@ -117,7 +116,7 @@
         .isEqualTo(FileSystemUtils.readContent(actualTargetPath, Charset.defaultCharset()));
 
     // Check that the returned value is stored under outputBaseExternal.
-    assertEquals(targetPath, actualTargetPath);
+    assertThat((Object) actualTargetPath).isEqualTo(targetPath);
   }
 
   /**
@@ -129,7 +128,7 @@
     Path targetPath = targetDirectory.getChild(downloadedFile.getBaseName());
     Path actualTargetPath = repositoryCache.get(downloadedFileSha256, targetPath, KeyType.SHA256);
 
-    assertEquals(actualTargetPath, null);
+    assertThat(actualTargetPath).isNull();
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 4f5b63e..88aa3c0 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -17,8 +17,6 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.baseArtifactNames;
 import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.baseNamesOf;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -114,15 +112,16 @@
     // But we avoid creating .so files for empty libraries,
     // because those have a potentially significant run-time startup cost.
     if (emptyShouldOutputStaticLibrary()) {
-      assertEquals("libemptylib.a", baseNamesOf(getFilesToBuild(emptylib)));
+      assertThat(baseNamesOf(getFilesToBuild(emptylib))).isEqualTo("libemptylib.a");
     } else {
       assertThat(getFilesToBuild(emptylib)).isEmpty();
     }
-    assertTrue(
-        emptylib
-            .getProvider(CcExecutionDynamicLibrariesProvider.class)
-            .getExecutionDynamicLibraryArtifacts()
-            .isEmpty());
+    assertThat(
+            emptylib
+                .getProvider(CcExecutionDynamicLibrariesProvider.class)
+                .getExecutionDynamicLibraryArtifacts()
+                .isEmpty())
+        .isTrue();
   }
 
   protected boolean emptyShouldOutputStaticLibrary() {
@@ -132,8 +131,8 @@
   @Test
   public void testEmptyBinary() throws Exception {
     ConfiguredTarget emptybin = getConfiguredTarget("//empty:emptybinary");
-    assertEquals(
-        "emptybinary" + OsUtils.executableExtension(), baseNamesOf(getFilesToBuild(emptybin)));
+    assertThat(baseNamesOf(getFilesToBuild(emptybin)))
+        .isEqualTo("emptybinary" + OsUtils.executableExtension());
   }
 
   private List<String> getCopts(String target) throws Exception {
@@ -229,11 +228,12 @@
             "cc_library(name = 'statically',",
             "           srcs = ['statically.cc'],",
             "           linkstatic=1)");
-    assertTrue(
-        statically
-            .getProvider(CcExecutionDynamicLibrariesProvider.class)
-            .getExecutionDynamicLibraryArtifacts()
-            .isEmpty());
+    assertThat(
+            statically
+                .getProvider(CcExecutionDynamicLibrariesProvider.class)
+                .getExecutionDynamicLibraryArtifacts()
+                .isEmpty())
+        .isTrue();
     Artifact staticallyDotA = getOnlyElement(getFilesToBuild(statically));
     assertThat(getGeneratingAction(staticallyDotA)).isInstanceOf(CppLinkAction.class);
     PathFragment dotAPath = staticallyDotA.getExecPath();
@@ -272,7 +272,8 @@
     CppLinkAction action = (CppLinkAction) getGeneratingAction(getExecutable(target));
     for (Artifact input : action.getInputs()) {
       String name = input.getFilename();
-      assertTrue(!CppFileTypes.ARCHIVE.matches(name) && !CppFileTypes.PIC_ARCHIVE.matches(name));
+      assertThat(!CppFileTypes.ARCHIVE.matches(name) && !CppFileTypes.PIC_ARCHIVE.matches(name))
+          .isTrue();
     }
   }
 
@@ -625,7 +626,7 @@
     // make sure the binary is dependent on the static lib
     Action linkAction = getGeneratingAction(getOnlyElement(getFilesToBuild(theApp)));
     ImmutableList<Artifact> filesToBuild = ImmutableList.copyOf(getFilesToBuild(theLib));
-    assertTrue(ImmutableSet.copyOf(linkAction.getInputs()).containsAll(filesToBuild));
+    assertThat(ImmutableSet.copyOf(linkAction.getInputs()).containsAll(filesToBuild)).isTrue();
   }
 
   @Test
@@ -699,8 +700,8 @@
   }
 
   private void assertStamping(boolean enabled, String label) throws Exception {
-    assertEquals(
-        enabled, AnalysisUtils.isStampingEnabled(getRuleContext(getConfiguredTarget(label))));
+    assertThat(AnalysisUtils.isStampingEnabled(getRuleContext(getConfiguredTarget(label))))
+        .isEqualTo(enabled);
   }
 
   @Test
@@ -768,7 +769,7 @@
         FileType.filterList(
             LinkerInputs.toLibraryArtifacts(linkingOutputs.getPreferredLibraries(true, true)),
             CppFileTypes.SHARED_LIBRARY);
-    assertEquals(sharedLibraries1, sharedLibraries2);
+    assertThat(sharedLibraries2).isEqualTo(sharedLibraries1);
   }
 
   /** Tests that shared libraries of the form "libfoo.so.1.2" are permitted within "srcs". */
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompileOnlyTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompileOnlyTest.java
index 4b1fe98..03f06b6 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompileOnlyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompileOnlyTest.java
@@ -13,8 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.rules.cpp;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.util.CompileOnlyTestCase;
@@ -51,11 +50,11 @@
 
     ConfiguredTarget target = getConfiguredTarget("//package:foo");
 
-    assertNotNull(getArtifactByExecPathSuffix(target, "/foo.pic.o"));
-    assertNotNull(getArtifactByExecPathSuffix(target, "/bar.pic.o"));
+    assertThat(getArtifactByExecPathSuffix(target, "/foo.pic.o")).isNotNull();
+    assertThat(getArtifactByExecPathSuffix(target, "/bar.pic.o")).isNotNull();
     // Check that deps are not built
-    assertNull(getArtifactByExecPathSuffix(target, "/foolib.pic.o"));
+    assertThat(getArtifactByExecPathSuffix(target, "/foolib.pic.o")).isNull();
     // Check that linking is not executed
-    assertNull(getArtifactByExecPathSuffix(target, "/foo"));
+    assertThat(getArtifactByExecPathSuffix(target, "/foo")).isNull();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index 7b3064d..1613d25 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -17,17 +17,11 @@
 
 import static com.google.common.collect.Iterables.getOnlyElement;
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.FailAction;
@@ -94,7 +88,7 @@
 
   private void assertNoCppModuleMapAction(String label) throws Exception {
     ConfiguredTarget target = getConfiguredTarget(label);
-    assertNull(target.getProvider(CppCompilationContext.class).getCppModuleMap());
+    assertThat(target.getProvider(CppCompilationContext.class).getCppModuleMap()).isNull();
   }
 
 
@@ -181,8 +175,13 @@
   @Test
   public void testEmptyLinkopts() throws Exception {
     ConfiguredTarget hello = getConfiguredTarget("//hello:hello");
-    assertTrue(hello.getProvider(CcLinkParamsProvider.class)
-        .getCcLinkParams(false, false).getLinkopts().isEmpty());
+    assertThat(
+            hello
+                .getProvider(CcLinkParamsProvider.class)
+                .getCcLinkParams(false, false)
+                .getLinkopts()
+                .isEmpty())
+        .isTrue();
   }
 
   @Test
@@ -219,20 +218,21 @@
 
     ExtraActionInfo.Builder builder = action.getExtraActionInfo();
     ExtraActionInfo info = builder.build();
-    assertEquals("CppLink", info.getMnemonic());
+    assertThat(info.getMnemonic()).isEqualTo("CppLink");
 
     CppLinkInfo cppLinkInfo = info.getExtension(CppLinkInfo.cppLinkInfo);
-    assertNotNull(cppLinkInfo);
+    assertThat(cppLinkInfo).isNotNull();
 
     Iterable<String> inputs = Artifact.asExecPaths(
         LinkerInputs.toLibraryArtifacts(action.getLinkCommandLine().getLinkerInputs()));
     assertThat(cppLinkInfo.getInputFileList()).containsExactlyElementsIn(inputs);
-    assertEquals(action.getPrimaryOutput().getExecPathString(), cppLinkInfo.getOutputFile());
-    assertFalse(cppLinkInfo.hasInterfaceOutputFile());
-    assertEquals(action.getLinkCommandLine().getLinkTargetType().name(),
-        cppLinkInfo.getLinkTargetType());
-    assertEquals(action.getLinkCommandLine().getLinkStaticness().name(),
-        cppLinkInfo.getLinkStaticness());
+    assertThat(cppLinkInfo.getOutputFile())
+        .isEqualTo(action.getPrimaryOutput().getExecPathString());
+    assertThat(cppLinkInfo.hasInterfaceOutputFile()).isFalse();
+    assertThat(cppLinkInfo.getLinkTargetType())
+        .isEqualTo(action.getLinkCommandLine().getLinkTargetType().name());
+    assertThat(cppLinkInfo.getLinkStaticness())
+        .isEqualTo(action.getLinkCommandLine().getLinkStaticness().name());
     Iterable<String> linkstamps = Artifact.asExecPaths(
         action.getLinkCommandLine().getLinkstamps().values());
     assertThat(cppLinkInfo.getLinkStampList()).containsExactlyElementsIn(linkstamps);
@@ -248,25 +248,26 @@
   public void testCppLinkActionExtraActionInfoWithSharedLibraries() throws Exception {
     useConfiguration("--cpu=k8");
     ConfiguredTarget hello = getConfiguredTarget("//hello:hello");
-    Artifact sharedObject  =
+    Artifact sharedObject =
         FileType.filter(getFilesToBuild(hello), CppFileTypes.SHARED_LIBRARY).iterator().next();
     CppLinkAction action = (CppLinkAction) getGeneratingAction(sharedObject);
 
     ExtraActionInfo.Builder builder = action.getExtraActionInfo();
     ExtraActionInfo info = builder.build();
-    assertEquals("CppLink", info.getMnemonic());
+    assertThat(info.getMnemonic()).isEqualTo("CppLink");
 
     CppLinkInfo cppLinkInfo = info.getExtension(CppLinkInfo.cppLinkInfo);
-    assertNotNull(cppLinkInfo);
+    assertThat(cppLinkInfo).isNotNull();
 
     Iterable<String> inputs = Artifact.asExecPaths(
         LinkerInputs.toLibraryArtifacts(action.getLinkCommandLine().getLinkerInputs()));
     assertThat(cppLinkInfo.getInputFileList()).containsExactlyElementsIn(inputs);
-    assertEquals(action.getPrimaryOutput().getExecPathString(), cppLinkInfo.getOutputFile());
-    assertEquals(action.getLinkCommandLine().getLinkTargetType().name(),
-        cppLinkInfo.getLinkTargetType());
-    assertEquals(action.getLinkCommandLine().getLinkStaticness().name(),
-        cppLinkInfo.getLinkStaticness());
+    assertThat(cppLinkInfo.getOutputFile())
+        .isEqualTo(action.getPrimaryOutput().getExecPathString());
+    assertThat(cppLinkInfo.getLinkTargetType())
+        .isEqualTo(action.getLinkCommandLine().getLinkTargetType().name());
+    assertThat(cppLinkInfo.getLinkStaticness())
+        .isEqualTo(action.getLinkCommandLine().getLinkStaticness().name());
     Iterable<String> linkstamps = Artifact.asExecPaths(
         action.getLinkCommandLine().getLinkstamps().values());
     assertThat(cppLinkInfo.getLinkStampList()).containsExactlyElementsIn(linkstamps);
@@ -377,15 +378,17 @@
     useConfiguration("--cpu=k8");
     // ArtifactsToAlwaysBuild should apply both for static libraries.
     ConfiguredTarget helloStatic = getConfiguredTarget("//hello:hello_static");
-    assertEquals(ImmutableSet.of("bin hello/_objs/hello_static/hello/hello.pic.o"),
-        artifactsToStrings(getOutputGroup(helloStatic, OutputGroupProvider.HIDDEN_TOP_LEVEL)));
+    assertThat(
+        artifactsToStrings(getOutputGroup(helloStatic, OutputGroupProvider.HIDDEN_TOP_LEVEL)))
+        .containsExactly("bin hello/_objs/hello_static/hello/hello.pic.o");
     Artifact implSharedObject = getBinArtifact("libhello_static.so", helloStatic);
     assertThat(getFilesToBuild(helloStatic)).doesNotContain(implSharedObject);
 
     // And for shared libraries.
     ConfiguredTarget hello = getConfiguredTarget("//hello:hello");
-    assertEquals(ImmutableSet.of("bin hello/_objs/hello_static/hello/hello.pic.o"),
-        artifactsToStrings(getOutputGroup(helloStatic, OutputGroupProvider.HIDDEN_TOP_LEVEL)));
+    assertThat(
+        artifactsToStrings(getOutputGroup(helloStatic, OutputGroupProvider.HIDDEN_TOP_LEVEL)))
+        .containsExactly("bin hello/_objs/hello_static/hello/hello.pic.o");
     implSharedObject = getBinArtifact("libhello.so", hello);
     assertThat(getFilesToBuild(hello)).contains(implSharedObject);
   }
@@ -398,12 +401,11 @@
         "cc_library(name = 'x', srcs = ['x.cc'], deps = [':y'], linkstatic = 1)",
         "cc_library(name = 'y', srcs = ['y.cc'], deps = [':z'])",
         "cc_library(name = 'z', srcs = ['z.cc'])");
-    assertEquals(
-        ImmutableSet.of(
-          "bin foo/_objs/x/foo/x.pic.o",
-          "bin foo/_objs/y/foo/y.pic.o",
-          "bin foo/_objs/z/foo/z.pic.o"),
-        artifactsToStrings(getOutputGroup(x, OutputGroupProvider.HIDDEN_TOP_LEVEL)));
+    assertThat(artifactsToStrings(getOutputGroup(x, OutputGroupProvider.HIDDEN_TOP_LEVEL)))
+        .containsExactly(
+            "bin foo/_objs/x/foo/x.pic.o",
+            "bin foo/_objs/y/foo/y.pic.o",
+            "bin foo/_objs/z/foo/z.pic.o");
   }
 
   @Test
@@ -789,8 +791,8 @@
     assertThat(ActionsTestUtil.baseArtifactNames(action.getDependencyArtifacts())).containsExactly(
         "stl.cppmap",
         "crosstool.cppmap");
-    assertEquals(ImmutableSet.of("src module/a.h"),
-        artifactsToStrings(action.getPrivateHeaders()));
+    assertThat(artifactsToStrings(action.getPrivateHeaders()))
+        .containsExactly("src module/a.h");
     assertThat(action.getPublicHeaders()).isEmpty();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java
index 4d6109f..3beb3a6 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java
@@ -54,12 +54,12 @@
 @RunWith(JUnit4.class)
 @TestSpec(size = Suite.MEDIUM_TESTS)
 public class CcToolchainFeaturesTest {
-  
+
   /**
    * Creates a {@code Variables} configuration from a list of key/value pairs.
-   * 
+   *
    * <p>If there are multiple entries with the same key, the variable will be treated as sequence
-   * type.    
+   * type.
    */
   private Variables createVariables(String... entries) {
     if (entries.length % 2 != 0) {
@@ -81,14 +81,14 @@
     }
     return variables.build();
   }
-  
+
   /**
    * Creates a CcToolchainFeatures from features described in the given toolchain fragment.
    */
   public static CcToolchainFeatures buildFeatures(String... toolchain) throws Exception {
     CToolchain.Builder toolchainBuilder = CToolchain.newBuilder();
-    TextFormat.merge(Joiner.on("").join(toolchain), toolchainBuilder);      
-    return new CcToolchainFeatures(toolchainBuilder.buildPartial());    
+    TextFormat.merge(Joiner.on("").join(toolchain), toolchainBuilder);
+    return new CcToolchainFeatures(toolchainBuilder.buildPartial());
   }
 
   private Set<String> getEnabledFeatures(CcToolchainFeatures features,
@@ -204,7 +204,7 @@
   private String getExpansionOfFlag(String value) throws Exception {
     return getExpansionOfFlag(value, createVariables());
   }
-  
+
   private List<String> getCommandLineForFlagGroups(String groups, Variables variables)
       throws Exception {
     FeatureConfiguration configuration =
@@ -219,11 +219,11 @@
             .getFeatureConfiguration(assumptionsFor("a"));
     return configuration.getCommandLine(CppCompileAction.CPP_COMPILE, variables);
   }
-  
+
   private List<String> getCommandLineForFlag(String value, Variables variables) throws Exception {
     return getCommandLineForFlagGroups("flag_group { flag: '" + value + "' }", variables);
   }
-  
+
   private String getExpansionOfFlag(String value, Variables variables) throws Exception {
     return getCommandLineForFlag(value, variables).get(0);
   }
@@ -237,7 +237,7 @@
       return e.getMessage();
     }
   }
-  
+
   private String getFlagExpansionError(String value, Variables variables) throws Exception {
     try {
       getExpansionOfFlag(value, variables);
@@ -752,7 +752,7 @@
       assertThat(e).hasMessageThat().contains("'v1' and 'v2'");
     }
   }
-  
+
   private VariableValueBuilder createNestedSequence(int depth, int count, String prefix) {
     if (depth == 0) {
       StringSequenceBuilder builder = new StringSequenceBuilder();
@@ -836,7 +836,7 @@
     CcToolchainFeatures features = buildFeatures(
         "feature { name: 'a' requires: { feature: 'b' } }",
         "feature { name: 'b' requires: { feature: 'c' } }",
-        "feature { name: 'c' }"); 
+        "feature { name: 'c' }");
     assertThat(getEnabledFeatures(features, "a")).isEmpty();
     assertThat(getEnabledFeatures(features, "a", "b")).isEmpty();
     assertThat(getEnabledFeatures(features, "a", "c")).containsExactly("c");
@@ -855,7 +855,7 @@
         "feature { name: 'b' requires: { feature: 'a' } implies: 'c' }",
         "feature { name: 'c' }",
         "feature { name: 'd' requires: { feature: 'c' } implies: 'e' }",
-        "feature { name: 'e' }"); 
+        "feature { name: 'e' }");
     assertThat(getEnabledFeatures(features, "b", "d")).isEmpty();
   }
 
@@ -867,7 +867,7 @@
         "feature { name: 'b' requires: { feature: 'a' } implies: 'c' }",
         "feature { name: 'c' }",
         "feature { name: 'd' requires: { feature: 'c' } implies: 'e' }",
-        "feature { name: 'e' }"); 
+        "feature { name: 'e' }");
     assertThat(getEnabledFeatures(features, "0", "b", "d")).containsExactly(
         "0", "a", "b", "c", "d", "e");
   }
@@ -912,7 +912,7 @@
         "feature { name: 'a' implies: 'b' requires: { feature: 'c' } }",
         "feature { name: 'b' }",
         "feature { name: 'c' }");
-    assertThat(getEnabledFeatures(features, "a")).isEmpty();    
+    assertThat(getEnabledFeatures(features, "a")).isEmpty();
   }
 
   @Test
@@ -979,7 +979,7 @@
         "feature { name: 'b' requires: { feature: 'a' } implies: 'd' }",
         "feature { name: 'c' implies: 'd' }",
         "feature { name: 'd' }");
-    assertThat(getEnabledFeatures(features, "b", "c")).containsExactly("c", "d");    
+    assertThat(getEnabledFeatures(features, "b", "c")).containsExactly("c", "d");
   }
 
   @Test
@@ -989,7 +989,7 @@
         "feature { name: 'b' }",
         "feature { name: 'c' requires: { feature: 'd' } }",
         "feature { name: 'd' }");
-    assertThat(getEnabledFeatures(features, "a", "b", "c")).containsExactly("a", "b");        
+    assertThat(getEnabledFeatures(features, "a", "b", "c")).containsExactly("a", "b");
   }
 
   @Test
@@ -1056,14 +1056,14 @@
     byte[] serialized = TestUtils.serializeObject(features);
     CcToolchainFeatures deserialized =
         (CcToolchainFeatures) TestUtils.deserializeObject(serialized);
-    assertThat(getEnabledFeatures(deserialized, "b")).containsExactly("a", "b");    
+    assertThat(getEnabledFeatures(deserialized, "b")).containsExactly("a", "b");
     assertThat(
             features
                 .getFeatureConfiguration(assumptionsFor("b"))
                 .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables("v", "1")))
         .containsExactly("-f", "1");
   }
-  
+
   @Test
   public void testDefaultFeatures() throws Exception {
     CcToolchainFeatures features =
@@ -1446,7 +1446,6 @@
     List<String> commandLine =
         featureConfiguration.getCommandLine("c++-compile", createVariables());
     assertThat(commandLine).contains("foo");
-    ;
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppFileTypesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppFileTypesTest.java
index 7970273..46677cd 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppFileTypesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppFileTypesTest.java
@@ -14,8 +14,7 @@
 
 package com.google.devtools.build.lib.rules.cpp;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -29,22 +28,22 @@
 
   @Test
   public void testTwoDotExtensions() {
-    assertTrue(CppFileTypes.OBJECT_FILE.matches("test.o"));
-    assertTrue(CppFileTypes.PIC_OBJECT_FILE.matches("test.pic.o"));
-    assertFalse(CppFileTypes.OBJECT_FILE.matches("test.pic.o"));
+    assertThat(CppFileTypes.OBJECT_FILE.matches("test.o")).isTrue();
+    assertThat(CppFileTypes.PIC_OBJECT_FILE.matches("test.pic.o")).isTrue();
+    assertThat(CppFileTypes.OBJECT_FILE.matches("test.pic.o")).isFalse();
   }
 
   @Test
   public void testVersionedSharedLibraries() {
-    assertTrue(CppFileTypes.SHARED_LIBRARY.matches("somelibrary.so"));
-    assertTrue(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.2"));
-    assertTrue(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.20"));
-    assertTrue(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.20.2"));
-    assertTrue(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("a/somelibrary.so.2"));
-    assertFalse(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.e"));
-    assertFalse(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.2e"));
-    assertFalse(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.e2"));
-    assertFalse(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.20.e2"));
-    assertFalse(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.a.2"));
+    assertThat(CppFileTypes.SHARED_LIBRARY.matches("somelibrary.so")).isTrue();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.2")).isTrue();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.20")).isTrue();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.20.2")).isTrue();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("a/somelibrary.so.2")).isTrue();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.e")).isFalse();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.2e")).isFalse();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.e2")).isFalse();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.so.20.e2")).isFalse();
+    assertThat(CppFileTypes.VERSIONED_SHARED_LIBRARY.matches("somelibrary.a.2")).isFalse();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
index fb8ebbb..fdd13b0 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
@@ -15,8 +15,6 @@
 package com.google.devtools.build.lib.rules.cpp;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Joiner;
@@ -386,17 +384,17 @@
             CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext),
             CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext));
     builder.setLinkType(LinkTargetType.STATIC_LIBRARY);
-    assertTrue(builder.canSplitCommandLine());
+    assertThat(builder.canSplitCommandLine()).isTrue();
 
     builder.setLinkType(LinkTargetType.DYNAMIC_LIBRARY);
-    assertTrue(builder.canSplitCommandLine());
+    assertThat(builder.canSplitCommandLine()).isTrue();
 
     builder.setInterfaceOutput(outputIfso);
-    assertFalse(builder.canSplitCommandLine());
+    assertThat(builder.canSplitCommandLine()).isFalse();
 
     builder.setInterfaceOutput(null);
     builder.setLinkType(LinkTargetType.INTERFACE_DYNAMIC_LIBRARY);
-    assertFalse(builder.canSplitCommandLine());
+    assertThat(builder.canSplitCommandLine()).isFalse();
   }
 
   /**
@@ -426,11 +424,11 @@
 
     CppLinkAction linkAction =
         createLinkBuilder(
-                Link.LinkTargetType.EXECUTABLE,
-                "dummyRuleContext/binary2",
-                objects.build(),
-                ImmutableList.<LibraryToLink>of(),
-                new FeatureConfiguration())
+            Link.LinkTargetType.EXECUTABLE,
+            "dummyRuleContext/binary2",
+            objects.build(),
+            ImmutableList.<LibraryToLink>of(),
+            new FeatureConfiguration())
             .setFake(true)
             .build();
 
@@ -451,12 +449,12 @@
     );
 
     // Ensure that anything above the minimum is properly scaled.
-    assertTrue(resources.getMemoryMb() == CppLinkAction.MIN_STATIC_LINK_RESOURCES.getMemoryMb()
-      || resources.getMemoryMb() == scaledSet.getMemoryMb());
-    assertTrue(resources.getCpuUsage() == CppLinkAction.MIN_STATIC_LINK_RESOURCES.getCpuUsage()
-      || resources.getCpuUsage() == scaledSet.getCpuUsage());
-    assertTrue(resources.getIoUsage() == CppLinkAction.MIN_STATIC_LINK_RESOURCES.getIoUsage()
-      || resources.getIoUsage() == scaledSet.getIoUsage());
+    assertThat(resources.getMemoryMb() == CppLinkAction.MIN_STATIC_LINK_RESOURCES.getMemoryMb()
+        || resources.getMemoryMb() == scaledSet.getMemoryMb()).isTrue();
+    assertThat(resources.getCpuUsage() == CppLinkAction.MIN_STATIC_LINK_RESOURCES.getCpuUsage()
+        || resources.getCpuUsage() == scaledSet.getCpuUsage()).isTrue();
+    assertThat(resources.getIoUsage() == CppLinkAction.MIN_STATIC_LINK_RESOURCES.getIoUsage()
+        || resources.getIoUsage() == scaledSet.getIoUsage()).isTrue();
   }
 
   private CppLinkActionBuilder createLinkBuilder(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
index 07ba4ff..323ec54 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
@@ -17,8 +17,6 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.NULL_ACTION_OWNER;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.actions.Artifact;
@@ -101,9 +99,9 @@
         ImmutableMap.of(a, b), outputDir);
     action.execute(null);
     symlink.stat(Symlinks.NOFOLLOW);
-    assertTrue(symlink.isSymbolicLink());
+    assertThat(symlink.isSymbolicLink()).isTrue();
     assertEquals(symlink.readSymbolicLink(), b.getPath().asFragment());
-    assertFalse(rootDirectory.getRelative("a").exists());
+    assertThat(rootDirectory.getRelative("a").exists()).isFalse();
   }
 
   @Test
@@ -118,8 +116,8 @@
         new CreateIncSymlinkAction(NULL_ACTION_OWNER, ImmutableMap.of(a, b), outputDir);
     Path extra = rootDirectory.getRelative("out/extra");
     extra.getOutputStream().close();
-    assertTrue(extra.exists());
+    assertThat(extra.exists()).isTrue();
     action.prepare(rootDirectory);
-    assertFalse(extra.exists());
+    assertThat(extra.exists()).isFalse();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
index 4647573..38d57b7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
@@ -15,11 +15,6 @@
 package com.google.devtools.build.lib.rules.cpp;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Functions;
@@ -42,7 +37,6 @@
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import org.junit.Before;
@@ -183,52 +177,58 @@
     CppConfiguration toolchain =
         create(loader, "--cpu=cpu", "--host_cpu=cpu", "--android_cpu=", "--fat_apk_cpu=");
     CcToolchainProvider ccProvider = getCcToolchainProvider(toolchain);
-    assertEquals("toolchain-identifier", toolchain.getToolchainIdentifier());
+    assertThat(toolchain.getToolchainIdentifier()).isEqualTo("toolchain-identifier");
 
-    assertEquals("host-system-name", toolchain.getHostSystemName());
-    assertEquals("compiler", toolchain.getCompiler());
-    assertEquals("target-libc", toolchain.getTargetLibc());
-    assertEquals("piii", toolchain.getTargetCpu());
-    assertEquals("target-system-name", toolchain.getTargetGnuSystemName());
+    assertThat(toolchain.getHostSystemName()).isEqualTo("host-system-name");
+    assertThat(toolchain.getCompiler()).isEqualTo("compiler");
+    assertThat(toolchain.getTargetLibc()).isEqualTo("target-libc");
+    assertThat(toolchain.getTargetCpu()).isEqualTo("piii");
+    assertThat(toolchain.getTargetGnuSystemName()).isEqualTo("target-system-name");
 
-    assertEquals(getToolPath("/path-to-ar"), toolchain.getToolPathFragment(Tool.AR));
+    assertThat(toolchain.getToolPathFragment(Tool.AR)).isEqualTo(getToolPath("/path-to-ar"));
 
-    assertEquals("abi-version", toolchain.getAbi());
-    assertEquals("abi-libc-version", toolchain.getAbiGlibcVersion());
+    assertThat(toolchain.getAbi()).isEqualTo("abi-version");
+    assertThat(toolchain.getAbiGlibcVersion()).isEqualTo("abi-libc-version");
 
-    assertTrue(toolchain.supportsGoldLinker());
-    assertFalse(toolchain.supportsStartEndLib());
-    assertFalse(toolchain.supportsInterfaceSharedObjects());
-    assertFalse(toolchain.supportsEmbeddedRuntimes());
-    assertFalse(toolchain.toolchainNeedsPic());
-    assertTrue(toolchain.supportsFission());
+    assertThat(toolchain.supportsGoldLinker()).isTrue();
+    assertThat(toolchain.supportsStartEndLib()).isFalse();
+    assertThat(toolchain.supportsInterfaceSharedObjects()).isFalse();
+    assertThat(toolchain.supportsEmbeddedRuntimes()).isFalse();
+    assertThat(toolchain.toolchainNeedsPic()).isFalse();
+    assertThat(toolchain.supportsFission()).isTrue();
 
     assertThat(ccProvider.getBuiltInIncludeDirectories())
         .containsExactly(getToolPath("/system-include-dir"));
-    assertNull(ccProvider.getSysroot());
+    assertThat(ccProvider.getSysroot()).isNull();
 
-    assertEquals(Arrays.asList("c", "fastbuild"), toolchain.getCompilerOptions(NO_FEATURES));
-    assertEquals(Arrays.<String>asList(), toolchain.getCOptions());
-    assertEquals(Arrays.asList("cxx", "cxx-fastbuild"), toolchain.getCxxOptions(NO_FEATURES));
-    assertEquals(Arrays.asList("unfiltered"), ccProvider.getUnfilteredCompilerOptions(NO_FEATURES));
+    assertThat(toolchain.getCompilerOptions(NO_FEATURES))
+        .containsExactly("c", "fastbuild")
+        .inOrder();
+    assertThat(toolchain.getCOptions()).isEmpty();
+    assertThat(toolchain.getCxxOptions(NO_FEATURES))
+        .containsExactly("cxx", "cxx-fastbuild")
+        .inOrder();
+    assertThat(ccProvider.getUnfilteredCompilerOptions(NO_FEATURES))
+        .containsExactly("unfiltered")
+        .inOrder();
 
-    assertEquals(Arrays.<String>asList(), ccProvider.getLinkOptions());
-    assertEquals(
-        Arrays.asList("linker", "linker-fastbuild", "fully static"),
-        toolchain.getFullyStaticLinkOptions(NO_FEATURES, false));
-    assertEquals(
-        Arrays.asList("linker", "linker-fastbuild", "dynamic"),
-        toolchain.getDynamicLinkOptions(NO_FEATURES, false));
-    assertEquals(
-        Arrays.asList("linker", "linker-fastbuild", "mostly static", "solinker"),
-        toolchain.getFullyStaticLinkOptions(NO_FEATURES, true));
-    assertEquals(
-        Arrays.asList("linker", "linker-fastbuild", "dynamic", "solinker"),
-        toolchain.getDynamicLinkOptions(NO_FEATURES, true));
+    assertThat(ccProvider.getLinkOptions()).isEmpty();
+    assertThat(toolchain.getFullyStaticLinkOptions(NO_FEATURES, false))
+        .containsExactly("linker", "linker-fastbuild", "fully static")
+        .inOrder();
+    assertThat(toolchain.getDynamicLinkOptions(NO_FEATURES, false))
+        .containsExactly("linker", "linker-fastbuild", "dynamic")
+        .inOrder();
+    assertThat(toolchain.getFullyStaticLinkOptions(NO_FEATURES, true))
+        .containsExactly("linker", "linker-fastbuild", "mostly static", "solinker")
+        .inOrder();
+    assertThat(toolchain.getDynamicLinkOptions(NO_FEATURES, true))
+        .containsExactly("linker", "linker-fastbuild", "dynamic", "solinker")
+        .inOrder();
 
-    assertEquals(Arrays.asList("objcopy"), toolchain.getObjCopyOptionsForEmbedding());
-    assertEquals(Arrays.<String>asList(), toolchain.getLdOptionsForEmbedding());
-    assertEquals(Arrays.asList("rcsD"), toolchain.getArFlags());
+    assertThat(toolchain.getObjCopyOptionsForEmbedding()).containsExactly("objcopy").inOrder();
+    assertThat(toolchain.getLdOptionsForEmbedding()).isEmpty();
+    assertThat(toolchain.getArFlags()).containsExactly("rcsD").inOrder();
 
     assertThat(toolchain.getAdditionalMakeVariables().entrySet())
         .containsExactlyElementsIn(
@@ -238,8 +238,8 @@
                     "CC_FLAGS", "")
                 .entrySet());
 
-    assertEquals(getToolPath("/path-to-ld"), toolchain.getLdExecutable());
-    assertEquals(getToolPath("/path-to-dwp"), toolchain.getToolPathFragment(Tool.DWP));
+    assertThat(toolchain.getLdExecutable()).isEqualTo(getToolPath("/path-to-ld"));
+    assertThat(toolchain.getToolPathFragment(Tool.DWP)).isEqualTo(getToolPath("/path-to-dwp"));
   }
 
   /**
@@ -493,106 +493,104 @@
     ConfiguredTarget ccToolchainA = getCcToolchainTarget(toolchainA);
     CcToolchainProvider ccProviderA = ccToolchainA.getProvider(CcToolchainProvider.class);
     MakeVariableProvider makeProviderA = ccToolchainA.getProvider(MakeVariableProvider.class);
-    assertEquals("toolchain-identifier-A", toolchainA.getToolchainIdentifier());
-    assertEquals("host-system-name-A", toolchainA.getHostSystemName());
-    assertEquals("target-system-name-A", toolchainA.getTargetGnuSystemName());
-    assertEquals("piii", toolchainA.getTargetCpu());
-    assertEquals("target-libc-A", toolchainA.getTargetLibc());
-    assertEquals("compiler-A", toolchainA.getCompiler());
-    assertEquals("abi-version-A", toolchainA.getAbi());
-    assertEquals("abi-libc-version-A", toolchainA.getAbiGlibcVersion());
-    assertEquals(getToolPath("path/to/ar-A"), toolchainA.getToolPathFragment(Tool.AR));
-    assertEquals(getToolPath("path/to/cpp-A"), toolchainA.getToolPathFragment(Tool.CPP));
-    assertEquals(getToolPath("path/to/gcc-A"), toolchainA.getToolPathFragment(Tool.GCC));
-    assertEquals(getToolPath("path/to/gcov-A"), toolchainA.getToolPathFragment(Tool.GCOV));
-    assertEquals(getToolPath("path/to/ld-A"), toolchainA.getToolPathFragment(Tool.LD));
-    assertEquals(getToolPath("path/to/nm-A"), toolchainA.getToolPathFragment(Tool.NM));
-    assertEquals(getToolPath("path/to/objcopy-A"), toolchainA.getToolPathFragment(Tool.OBJCOPY));
-    assertEquals(getToolPath("path/to/objdump-A"), toolchainA.getToolPathFragment(Tool.OBJDUMP));
-    assertEquals(getToolPath("path/to/strip-A"), toolchainA.getToolPathFragment(Tool.STRIP));
-    assertTrue(toolchainA.supportsGoldLinker());
-    assertTrue(toolchainA.supportsStartEndLib());
-    assertTrue(toolchainA.supportsEmbeddedRuntimes());
-    assertTrue(toolchainA.toolchainNeedsPic());
+    assertThat(toolchainA.getToolchainIdentifier()).isEqualTo("toolchain-identifier-A");
+    assertThat(toolchainA.getHostSystemName()).isEqualTo("host-system-name-A");
+    assertThat(toolchainA.getTargetGnuSystemName()).isEqualTo("target-system-name-A");
+    assertThat(toolchainA.getTargetCpu()).isEqualTo("piii");
+    assertThat(toolchainA.getTargetLibc()).isEqualTo("target-libc-A");
+    assertThat(toolchainA.getCompiler()).isEqualTo("compiler-A");
+    assertThat(toolchainA.getAbi()).isEqualTo("abi-version-A");
+    assertThat(toolchainA.getAbiGlibcVersion()).isEqualTo("abi-libc-version-A");
+    assertThat(toolchainA.getToolPathFragment(Tool.AR)).isEqualTo(getToolPath("path/to/ar-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.CPP)).isEqualTo(getToolPath("path/to/cpp-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.GCC)).isEqualTo(getToolPath("path/to/gcc-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.GCOV)).isEqualTo(getToolPath("path/to/gcov-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.LD)).isEqualTo(getToolPath("path/to/ld-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.NM)).isEqualTo(getToolPath("path/to/nm-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.OBJCOPY))
+        .isEqualTo(getToolPath("path/to/objcopy-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.OBJDUMP))
+        .isEqualTo(getToolPath("path/to/objdump-A"));
+    assertThat(toolchainA.getToolPathFragment(Tool.STRIP))
+        .isEqualTo(getToolPath("path/to/strip-A"));
+    assertThat(toolchainA.supportsGoldLinker()).isTrue();
+    assertThat(toolchainA.supportsStartEndLib()).isTrue();
+    assertThat(toolchainA.supportsEmbeddedRuntimes()).isTrue();
+    assertThat(toolchainA.toolchainNeedsPic()).isTrue();
 
-    assertEquals(
-        Arrays.asList(
-            "compiler-flag-A-1", "compiler-flag-A-2", "fastbuild-flag-A-1", "fastbuild-flag-A-2"),
-        toolchainA.getCompilerOptions(NO_FEATURES));
-    assertEquals(
-        Arrays.asList(
-            "cxx-flag-A-1", "cxx-flag-A-2", "cxx-fastbuild-flag-A-1", "cxx-fastbuild-flag-A-2"),
-        toolchainA.getCxxOptions(NO_FEATURES));
-    assertEquals(
-        Arrays.asList("--sysroot=some", "unfiltered-flag-A-1", "unfiltered-flag-A-2"),
-        ccProviderA.getUnfilteredCompilerOptions(NO_FEATURES));
-    assertEquals(
-        Arrays.asList(
+    assertThat(toolchainA.getCompilerOptions(NO_FEATURES))
+        .containsExactly(
+            "compiler-flag-A-1", "compiler-flag-A-2", "fastbuild-flag-A-1", "fastbuild-flag-A-2")
+        .inOrder();
+    assertThat(toolchainA.getCxxOptions(NO_FEATURES))
+        .containsExactly(
+            "cxx-flag-A-1", "cxx-flag-A-2", "cxx-fastbuild-flag-A-1", "cxx-fastbuild-flag-A-2")
+        .inOrder();
+    assertThat(ccProviderA.getUnfilteredCompilerOptions(NO_FEATURES))
+        .containsExactly("--sysroot=some", "unfiltered-flag-A-1", "unfiltered-flag-A-2")
+        .inOrder();
+    assertThat(toolchainA.getDynamicLinkOptions(NO_FEATURES, true))
+        .containsExactly(
             "linker-flag-A-1",
             "linker-flag-A-2",
             "linker-fastbuild-flag-A-1",
             "linker-fastbuild-flag-A-2",
             "solinker-flag-A-1",
-            "solinker-flag-A-2"),
-        toolchainA.getDynamicLinkOptions(NO_FEATURES, true));
+            "solinker-flag-A-2")
+        .inOrder();
 
     // Only test a couple of compilation/lipo/linking mode combinations
     // (but test each mode at least once.)
-    assertEquals(
-        Arrays.asList(
+    assertThat(
+            toolchainA.configureLinkerOptions(
+                CompilationMode.FASTBUILD,
+                LipoMode.OFF,
+                LinkingMode.FULLY_STATIC,
+                PathFragment.create("hello-world/ld")))
+        .containsExactly(
             "linker-flag-A-1",
             "linker-flag-A-2",
             "linker-fastbuild-flag-A-1",
             "linker-fastbuild-flag-A-2",
             "fully-static-flag-A-1",
-            "fully-static-flag-A-2"),
-        toolchainA.configureLinkerOptions(
-            CompilationMode.FASTBUILD,
-            LipoMode.OFF,
-            LinkingMode.FULLY_STATIC,
-            PathFragment.create("hello-world/ld")));
-    assertEquals(
-        Arrays.asList(
-            "linker-flag-A-1",
-            "linker-flag-A-2",
-            "linker-dbg-flag-A-1",
-            "linker-dbg-flag-A-2"),
-        toolchainA.configureLinkerOptions(
-            CompilationMode.DBG,
-            LipoMode.OFF,
-            LinkingMode.DYNAMIC,
-            PathFragment.create("hello-world/ld")));
-    assertEquals(
-        Arrays.asList(
-            "linker-flag-A-1",
-            "linker-flag-A-2",
-            "fully-static-flag-A-1",
-            "fully-static-flag-A-2"),
-        toolchainA.configureLinkerOptions(
-            CompilationMode.OPT,
-            LipoMode.OFF,
-            LinkingMode.FULLY_STATIC,
-            PathFragment.create("hello-world/ld")));
+            "fully-static-flag-A-2")
+        .inOrder();
+    assertThat(
+            toolchainA.configureLinkerOptions(
+                CompilationMode.DBG,
+                LipoMode.OFF,
+                LinkingMode.DYNAMIC,
+                PathFragment.create("hello-world/ld")))
+        .containsExactly(
+            "linker-flag-A-1", "linker-flag-A-2", "linker-dbg-flag-A-1", "linker-dbg-flag-A-2")
+        .inOrder();
+    assertThat(
+            toolchainA.configureLinkerOptions(
+                CompilationMode.OPT,
+                LipoMode.OFF,
+                LinkingMode.FULLY_STATIC,
+                PathFragment.create("hello-world/ld")))
+        .containsExactly(
+            "linker-flag-A-1", "linker-flag-A-2", "fully-static-flag-A-1", "fully-static-flag-A-2")
+        .inOrder();
 
-    assertEquals(
-        Arrays.asList(
-            "linker-flag-A-1",
-            "linker-flag-A-2",
-            "fully-static-flag-A-1",
-            "fully-static-flag-A-2"),
-        toolchainA.configureLinkerOptions(
-            CompilationMode.OPT,
-            LipoMode.BINARY,
-            LinkingMode.FULLY_STATIC,
-            PathFragment.create("hello-world/ld")));
+    assertThat(
+            toolchainA.configureLinkerOptions(
+                CompilationMode.OPT,
+                LipoMode.BINARY,
+                LinkingMode.FULLY_STATIC,
+                PathFragment.create("hello-world/ld")))
+        .containsExactly(
+            "linker-flag-A-1", "linker-flag-A-2", "fully-static-flag-A-1", "fully-static-flag-A-2")
+        .inOrder();
 
-    assertEquals(
-        Arrays.asList("objcopy-embed-flag-A-1", "objcopy-embed-flag-A-2"),
-        toolchainA.getObjCopyOptionsForEmbedding());
-    assertEquals(
-        Arrays.asList("ld-embed-flag-A-1", "ld-embed-flag-A-2"),
-        toolchainA.getLdOptionsForEmbedding());
-    assertEquals(Arrays.asList("ar-flag-A"), toolchainA.getArFlags());
+    assertThat(toolchainA.getObjCopyOptionsForEmbedding())
+        .containsExactly("objcopy-embed-flag-A-1", "objcopy-embed-flag-A-2")
+        .inOrder();
+    assertThat(toolchainA.getLdOptionsForEmbedding())
+        .containsExactly("ld-embed-flag-A-1", "ld-embed-flag-A-2")
+        .inOrder();
+    assertThat(toolchainA.getArFlags()).containsExactly("ar-flag-A").inOrder();
 
     assertThat(makeProviderA.getMakeVariables().entrySet())
         .containsExactlyElementsIn(
@@ -603,11 +601,11 @@
                 .put("STACK_FRAME_UNLIMITED", "")
                 .build()
                 .entrySet());
-    assertEquals(
-        Arrays.asList(
-            getToolPath("/system-include-dir-A-1"), getToolPath("/system-include-dir-A-2")),
-        ccProviderA.getBuiltInIncludeDirectories());
-    assertEquals(PathFragment.create("some"), ccProviderA.getSysroot());
+    assertThat(ccProviderA.getBuiltInIncludeDirectories())
+        .containsExactly(
+            getToolPath("/system-include-dir-A-1"), getToolPath("/system-include-dir-A-2"))
+        .inOrder();
+    assertThat(ccProviderA.getSysroot()).isEqualTo(PathFragment.create("some"));
 
     // Cursory testing of the "B" toolchain only; assume that if none of
     // toolchain B bled through into toolchain A, the reverse also didn't occur. And
@@ -628,60 +626,56 @@
             "--android_cpu=",
             "--fat_apk_cpu=");
     CcToolchainProvider ccProviderC = getCcToolchainProvider(toolchainC);
-    assertEquals("toolchain-identifier-C", toolchainC.getToolchainIdentifier());
-    assertEquals("host-system-name-C", toolchainC.getHostSystemName());
-    assertEquals("target-system-name-C", toolchainC.getTargetGnuSystemName());
-    assertEquals("piii", toolchainC.getTargetCpu());
-    assertEquals("target-libc-C", toolchainC.getTargetLibc());
-    assertEquals("compiler-C", toolchainC.getCompiler());
-    assertEquals("abi-version-C", toolchainC.getAbi());
-    assertEquals("abi-libc-version-C", toolchainC.getAbiGlibcVersion());
+    assertThat(toolchainC.getToolchainIdentifier()).isEqualTo("toolchain-identifier-C");
+    assertThat(toolchainC.getHostSystemName()).isEqualTo("host-system-name-C");
+    assertThat(toolchainC.getTargetGnuSystemName()).isEqualTo("target-system-name-C");
+    assertThat(toolchainC.getTargetCpu()).isEqualTo("piii");
+    assertThat(toolchainC.getTargetLibc()).isEqualTo("target-libc-C");
+    assertThat(toolchainC.getCompiler()).isEqualTo("compiler-C");
+    assertThat(toolchainC.getAbi()).isEqualTo("abi-version-C");
+    assertThat(toolchainC.getAbiGlibcVersion()).isEqualTo("abi-libc-version-C");
     // Don't bother with testing the list of tools again.
-    assertFalse(toolchainC.supportsGoldLinker());
-    assertFalse(toolchainC.supportsStartEndLib());
-    assertFalse(toolchainC.supportsInterfaceSharedObjects());
-    assertFalse(toolchainC.supportsEmbeddedRuntimes());
-    assertFalse(toolchainC.toolchainNeedsPic());
-    assertFalse(toolchainC.supportsFission());
+    assertThat(toolchainC.supportsGoldLinker()).isFalse();
+    assertThat(toolchainC.supportsStartEndLib()).isFalse();
+    assertThat(toolchainC.supportsInterfaceSharedObjects()).isFalse();
+    assertThat(toolchainC.supportsEmbeddedRuntimes()).isFalse();
+    assertThat(toolchainC.toolchainNeedsPic()).isFalse();
+    assertThat(toolchainC.supportsFission()).isFalse();
 
     assertThat(toolchainC.getCompilerOptions(NO_FEATURES)).isEmpty();
     assertThat(toolchainC.getCOptions()).isEmpty();
     assertThat(toolchainC.getCxxOptions(NO_FEATURES)).isEmpty();
     assertThat(ccProviderC.getUnfilteredCompilerOptions(NO_FEATURES)).isEmpty();
-    assertEquals(Collections.EMPTY_LIST, toolchainC.getDynamicLinkOptions(NO_FEATURES, true));
-    assertEquals(
-        Collections.EMPTY_LIST,
-        toolchainC.configureLinkerOptions(
-            CompilationMode.FASTBUILD,
-            LipoMode.OFF,
-            LinkingMode.FULLY_STATIC,
-            PathFragment.create("hello-world/ld")));
-    assertEquals(
-        Collections.EMPTY_LIST,
-        toolchainC.configureLinkerOptions(
-            CompilationMode.DBG,
-            LipoMode.OFF,
-            LinkingMode.DYNAMIC,
-            PathFragment.create("hello-world/ld")));
-    assertEquals(
-        Collections.EMPTY_LIST,
-        toolchainC.configureLinkerOptions(
-            CompilationMode.OPT,
-            LipoMode.OFF,
-            LinkingMode.FULLY_STATIC,
-            PathFragment.create("hello-world/ld")));
+    assertThat(toolchainC.getDynamicLinkOptions(NO_FEATURES, true)).isEmpty();
+    assertThat(
+            toolchainC.configureLinkerOptions(
+                CompilationMode.FASTBUILD,
+                LipoMode.OFF,
+                LinkingMode.FULLY_STATIC,
+                PathFragment.create("hello-world/ld")))
+        .isEmpty();
+    assertThat(
+            toolchainC.configureLinkerOptions(
+                CompilationMode.DBG,
+                LipoMode.OFF,
+                LinkingMode.DYNAMIC,
+                PathFragment.create("hello-world/ld")))
+        .isEmpty();
+    assertThat(
+            toolchainC.configureLinkerOptions(
+                CompilationMode.OPT,
+                LipoMode.OFF,
+                LinkingMode.FULLY_STATIC,
+                PathFragment.create("hello-world/ld")))
+        .isEmpty();
     assertThat(toolchainC.getObjCopyOptionsForEmbedding()).isEmpty();
     assertThat(toolchainC.getLdOptionsForEmbedding()).isEmpty();
 
-    assertThat(toolchainC.getAdditionalMakeVariables().entrySet())
-        .containsExactlyElementsIn(
-            ImmutableMap.<String, String>builder()
-                .put("CC_FLAGS", "")
-                .put("STACK_FRAME_UNLIMITED", "")
-                .build()
-                .entrySet());
+    assertThat(toolchainC.getAdditionalMakeVariables()).containsExactlyEntriesIn(ImmutableMap.of(
+        "CC_FLAGS", "",
+        "STACK_FRAME_UNLIMITED", ""));
     assertThat(ccProviderC.getBuiltInIncludeDirectories()).isEmpty();
-    assertNull(ccProviderC.getSysroot());
+    assertThat(ccProviderC.getSysroot()).isNull();
   }
 
   protected PathFragment getToolPath(String path) throws LabelSyntaxException {
@@ -698,28 +692,29 @@
       throws Exception {
     String lipoSuffix = lipoMode.toString().toLowerCase();
     CppConfiguration toolchainB = create(loader, args);
-    assertEquals("toolchain-identifier-B", toolchainB.getToolchainIdentifier());
-    assertEquals(
-        Arrays.asList(
+    assertThat(toolchainB.getToolchainIdentifier()).isEqualTo("toolchain-identifier-B");
+    assertThat(
+            toolchainB.configureLinkerOptions(
+                CompilationMode.DBG,
+                lipoMode,
+                LinkingMode.DYNAMIC,
+                PathFragment.create("hello-world/ld")))
+        .containsExactly(
             "linker-flag-B-1",
             "linker-flag-B-2",
             "linker-dbg-flag-B-1",
             "linker-dbg-flag-B-2",
-            "linker-lipo_" + lipoSuffix),
-        toolchainB.configureLinkerOptions(
-            CompilationMode.DBG,
-            lipoMode,
-            LinkingMode.DYNAMIC,
-            PathFragment.create("hello-world/ld")));
-    assertEquals(
-        ImmutableList.<String>of(
+            "linker-lipo_" + lipoSuffix)
+        .inOrder();
+    assertThat(toolchainB.getCompilerOptions(ImmutableList.of("crosstool_fig")))
+        .containsExactly(
             "compiler-flag-B-1",
             "compiler-flag-B-2",
             "fastbuild-flag-B-1",
             "fastbuild-flag-B-2",
             "lipo_" + lipoSuffix,
-            "-Wfig"),
-        toolchainB.getCompilerOptions(ImmutableList.of("crosstool_fig")));
+            "-Wfig")
+        .inOrder();
   }
 
   /**
@@ -806,28 +801,26 @@
                 + "}");
 
     // Uses the default toolchain for k8.
-    assertEquals("toolchain-identifier-BB", create(loader, "--cpu=k8").getToolchainIdentifier());
+    assertThat(create(loader, "--cpu=k8").getToolchainIdentifier())
+        .isEqualTo("toolchain-identifier-BB");
     // Does not default to --cpu=k8; if no --cpu flag is present, Bazel defaults to the host cpu!
-    assertEquals(
-        "toolchain-identifier-BA",
-        create(loader, "--cpu=k8", "--compiler=compiler-A", "--glibc=target-libc-B")
-            .getToolchainIdentifier());
+    assertThat(
+            create(loader, "--cpu=k8", "--compiler=compiler-A", "--glibc=target-libc-B")
+                .getToolchainIdentifier())
+        .isEqualTo("toolchain-identifier-BA");
     // Uses the default toolchain for piii.
-    assertEquals(
-        "toolchain-identifier-AA-piii", create(loader, "--cpu=piii").getToolchainIdentifier());
+    assertThat(create(loader, "--cpu=piii").getToolchainIdentifier())
+        .isEqualTo("toolchain-identifier-AA-piii");
 
     // We can select the unique piii toolchain with either its compiler or glibc.
-    assertEquals(
-        "toolchain-identifier-AA-piii",
-        create(loader, "--cpu=piii", "--compiler=compiler-A").getToolchainIdentifier());
-    assertEquals(
-        "toolchain-identifier-AA-piii",
-        create(loader, "--cpu=piii", "--glibc=target-libc-A").getToolchainIdentifier());
+    assertThat(create(loader, "--cpu=piii", "--compiler=compiler-A").getToolchainIdentifier())
+        .isEqualTo("toolchain-identifier-AA-piii");
+    assertThat(create(loader, "--cpu=piii", "--glibc=target-libc-A").getToolchainIdentifier())
+        .isEqualTo("toolchain-identifier-AA-piii");
 
     // compiler-C uniquely identifies a toolchain, so we can use it.
-    assertEquals(
-        "toolchain-identifier-BC",
-        create(loader, "--cpu=k8", "--compiler=compiler-C").getToolchainIdentifier());
+    assertThat(create(loader, "--cpu=k8", "--compiler=compiler-C").getToolchainIdentifier())
+        .isEqualTo("toolchain-identifier-BC");
 
     try {
       create(loader, "--cpu=k8", "--compiler=nonexistent-compiler");
@@ -1013,14 +1006,16 @@
       ctTop = PackageIdentifier.createInMainRepo(ctTop.getPackageFragment());
     }
     CppConfiguration defaultLibs = create(loader, "--cpu=piii");
-    assertEquals(
-        Label.create(ctTop, "static-runtime-libs-piii"), defaultLibs.getStaticRuntimeLibsLabel());
-    assertEquals(
-        Label.create(ctTop, "dynamic-runtime-libs-piii"), defaultLibs.getDynamicRuntimeLibsLabel());
+    assertThat(defaultLibs.getStaticRuntimeLibsLabel())
+        .isEqualTo(Label.create(ctTop, "static-runtime-libs-piii"));
+    assertThat(defaultLibs.getDynamicRuntimeLibsLabel())
+        .isEqualTo(Label.create(ctTop, "dynamic-runtime-libs-piii"));
 
     CppConfiguration customLibs = create(loader, "--cpu=k8");
-    assertEquals(Label.create(ctTop, "static-group"), customLibs.getStaticRuntimeLibsLabel());
-    assertEquals(Label.create(ctTop, "dynamic-group"), customLibs.getDynamicRuntimeLibsLabel());
+    assertThat(customLibs.getStaticRuntimeLibsLabel())
+        .isEqualTo(Label.create(ctTop, "static-group"));
+    assertThat(customLibs.getDynamicRuntimeLibsLabel())
+        .isEqualTo(Label.create(ctTop, "dynamic-group"));
   }
 
   /*
@@ -1035,7 +1030,7 @@
     CppConfiguration cppConfig = create(loader, "--cpu=cpu");
     ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
     cppConfig.addGlobalMakeVariables(builder);
-    assertNotNull(builder.build().get("GCOVTOOL"));
+    assertThat(builder.build().get("GCOVTOOL")).isNotNull();
 
     // Crosstool without gcov-tool
     loader = loaderWithOptionalTool("");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LTOBackendActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LTOBackendActionTest.java
index d5f471e..4b2bebf 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LTOBackendActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LTOBackendActionTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.rules.cpp;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -93,12 +92,14 @@
             .build(ActionsTestUtil.NULL_ACTION_OWNER, collectingAnalysisEnvironment, targetConfig);
     collectingAnalysisEnvironment.registerAction(actions);
     LTOBackendAction action = (LTOBackendAction) actions[0];
-    assertEquals(ActionsTestUtil.NULL_ACTION_OWNER.getLabel(), action.getOwner().getLabel());
+    assertThat(action.getOwner().getLabel())
+        .isEqualTo(ActionsTestUtil.NULL_ACTION_OWNER.getLabel());
     assertThat(action.getInputs()).containsExactly(bitcode1Artifact, index1Artifact);
     assertThat(action.getOutputs()).containsExactly(destinationArtifact);
-    assertEquals(AbstractAction.DEFAULT_RESOURCE_SET, action.getSpawn().getLocalResources());
+    assertThat(action.getSpawn().getLocalResources())
+        .isEqualTo(AbstractAction.DEFAULT_RESOURCE_SET);
     assertThat(action.getArguments()).containsExactly("/bin/clang");
-    assertEquals("Test", action.getProgressMessage());
+    assertThat(action.getProgressMessage()).isEqualTo("Test");
     assertThat(action.inputsDiscovered()).isFalse();
 
     // Discover inputs, which should not add any inputs since bitcode1.imports is empty.
@@ -120,12 +121,14 @@
             .build(ActionsTestUtil.NULL_ACTION_OWNER, collectingAnalysisEnvironment, targetConfig);
     collectingAnalysisEnvironment.registerAction(actions);
     LTOBackendAction action = (LTOBackendAction) actions[0];
-    assertEquals(ActionsTestUtil.NULL_ACTION_OWNER.getLabel(), action.getOwner().getLabel());
+    assertThat(action.getOwner().getLabel())
+        .isEqualTo(ActionsTestUtil.NULL_ACTION_OWNER.getLabel());
     assertThat(action.getInputs()).containsExactly(bitcode2Artifact, index2Artifact);
     assertThat(action.getOutputs()).containsExactly(destinationArtifact);
-    assertEquals(AbstractAction.DEFAULT_RESOURCE_SET, action.getSpawn().getLocalResources());
+    assertThat(action.getSpawn().getLocalResources())
+        .isEqualTo(AbstractAction.DEFAULT_RESOURCE_SET);
     assertThat(action.getArguments()).containsExactly("/bin/clang");
-    assertEquals("Test", action.getProgressMessage());
+    assertThat(action.getProgressMessage()).isEqualTo("Test");
     assertThat(action.inputsDiscovered()).isFalse();
 
     // Discover inputs, which should add bitcode1.o which is listed in bitcode2.imports.
diff --git a/src/test/java/com/google/devtools/build/lib/util/AnsiStrippingOutputStreamTest.java b/src/test/java/com/google/devtools/build/lib/util/AnsiStrippingOutputStreamTest.java
index 5ca0444..ce1f6d7 100644
--- a/src/test/java/com/google/devtools/build/lib/util/AnsiStrippingOutputStreamTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/AnsiStrippingOutputStreamTest.java
@@ -13,16 +13,15 @@
 // limitations under the License.
 package com.google.devtools.build.lib.util;
 
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
+import static com.google.common.truth.Truth.assertThat;
 
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /**
  * Tests for {@link AnsiStrippingOutputStream}.
@@ -51,34 +50,32 @@
 
   @Test
   public void doesNotFailHorribly() throws Exception {
-    assertEquals("Love", getOutput("Love"));
+    assertThat(getOutput("Love")).isEqualTo("Love");
   }
 
   @Test
   public void canStripAnsiCode() throws Exception {
-    assertEquals("Love", getOutput(ESCAPE + "32mLove" + ESCAPE + "m"));
+    assertThat(getOutput(ESCAPE + "32mLove" + ESCAPE + "m")).isEqualTo("Love");
   }
 
   @Test
   public void recognizesAnsiCodeWhenBrokenUp() throws Exception {
-    assertEquals("Love", getOutput("\u001b", "[", "mLove"));
+    assertThat(getOutput("\u001b", "[", "mLove")).isEqualTo("Love");
   }
 
   @Test
   public void handlesOnlyEscCorrectly() throws Exception {
-    assertEquals("\u001bLove", getOutput("\u001bLove"));
+    assertThat(getOutput("\u001bLove")).isEqualTo("\u001bLove");
   }
 
   @Test
   public void handlesEscInPlaceOfControlCharCorrectly() throws Exception {
-    assertEquals(ESCAPE + "31;42Love",
-        getOutput(ESCAPE + "31;42" + ESCAPE + "1mLove"));
+    assertThat(getOutput(ESCAPE + "31;42" + ESCAPE + "1mLove")).isEqualTo(ESCAPE + "31;42Love");
   }
 
   @Test
   public void handlesTwoEscapeSequencesCorrectly() throws Exception {
-    assertEquals("Love",
-        getOutput(ESCAPE + "32m" + ESCAPE + "1m" + "Love"));
+    assertThat(getOutput(ESCAPE + "32m" + ESCAPE + "1m" + "Love")).isEqualTo("Love");
   }
 
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/CommandFailureUtilsTest.java b/src/test/java/com/google/devtools/build/lib/util/CommandFailureUtilsTest.java
index 8c1cd2a..7ce30ec 100644
--- a/src/test/java/com/google/devtools/build/lib/util/CommandFailureUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/CommandFailureUtilsTest.java
@@ -13,15 +13,14 @@
 // limitations under the License.
 package com.google.devtools.build.lib.util;
 
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
+import static com.google.common.truth.Truth.assertThat;
 
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 @RunWith(JUnit4.class)
 public class CommandFailureUtilsTest {
@@ -40,28 +39,28 @@
     env.put("FOO", "foo");
     String cwd = "/my/working/directory";
     String message = CommandFailureUtils.describeCommandError(false, Arrays.asList(args), env, cwd);
-    String verboseMessage = CommandFailureUtils.describeCommandError(true, Arrays.asList(args), env,
-                                                                     cwd);
-    assertEquals(
-        "error executing command some_command arg1 "
-        + "arg2 arg3 arg4 arg5 arg6 'with spaces' arg8 '*' arg10 "
-        + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
-        + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
-        + "arg27 arg28 arg29 arg30 arg31 "
-        + "... (remaining 8 argument(s) skipped)",
-        message);
-    assertEquals(
-        "error executing command \n"
-        + "  (cd /my/working/directory && \\\n"
-        + "  exec env - \\\n"
-        + "    FOO=foo \\\n"
-        + "    PATH=/usr/bin:/bin:/sbin \\\n"
-        + "  some_command arg1 arg2 arg3 arg4 arg5 arg6 'with spaces' arg8 '*' arg10 "
-        + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
-        + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
-        + "arg27 arg28 arg29 arg30 arg31 arg32 arg33 arg34 "
-        + "arg35 arg36 arg37 arg38 arg39)",
-        verboseMessage);
+    String verboseMessage =
+        CommandFailureUtils.describeCommandError(true, Arrays.asList(args), env, cwd);
+    assertThat(message)
+        .isEqualTo(
+            "error executing command some_command arg1 "
+                + "arg2 arg3 arg4 arg5 arg6 'with spaces' arg8 '*' arg10 "
+                + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
+                + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
+                + "arg27 arg28 arg29 arg30 arg31 "
+                + "... (remaining 8 argument(s) skipped)");
+    assertThat(verboseMessage)
+        .isEqualTo(
+            "error executing command \n"
+                + "  (cd /my/working/directory && \\\n"
+                + "  exec env - \\\n"
+                + "    FOO=foo \\\n"
+                + "    PATH=/usr/bin:/bin:/sbin \\\n"
+                + "  some_command arg1 arg2 arg3 arg4 arg5 arg6 'with spaces' arg8 '*' arg10 "
+                + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
+                + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
+                + "arg27 arg28 arg29 arg30 arg31 arg32 arg33 arg34 "
+                + "arg35 arg36 arg37 arg38 arg39)");
   }
 
   @Test
@@ -74,20 +73,20 @@
     env.put("FOO", "foo");
     env.put("PATH", "/usr/bin:/bin:/sbin");
     String cwd = null;
-    String message = CommandFailureUtils.describeCommandFailure(false, Arrays.asList(args),
-                                                                env, cwd);
-    String verboseMessage = CommandFailureUtils.describeCommandFailure(true, Arrays.asList(args),
-                                                                       env, cwd);
-    assertEquals(
-        "sh failed: error executing command "
-        + "/bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42'",
-        message);
-    assertEquals(
-        "sh failed: error executing command \n"
-        + "  (exec env - \\\n"
-        + "    FOO=foo \\\n"
-        + "    PATH=/usr/bin:/bin:/sbin \\\n"
-        + "  /bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42')",
-        verboseMessage);
+    String message =
+        CommandFailureUtils.describeCommandFailure(false, Arrays.asList(args), env, cwd);
+    String verboseMessage =
+        CommandFailureUtils.describeCommandFailure(true, Arrays.asList(args), env, cwd);
+    assertThat(message)
+        .isEqualTo(
+            "sh failed: error executing command "
+                + "/bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42'");
+    assertThat(verboseMessage)
+        .isEqualTo(
+            "sh failed: error executing command \n"
+                + "  (exec env - \\\n"
+                + "    FOO=foo \\\n"
+                + "    PATH=/usr/bin:/bin:/sbin \\\n"
+                + "  /bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42')");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/CommandUtilsTest.java b/src/test/java/com/google/devtools/build/lib/util/CommandUtilsTest.java
index f226383..fde8fb7 100644
--- a/src/test/java/com/google/devtools/build/lib/util/CommandUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/CommandUtilsTest.java
@@ -13,20 +13,18 @@
 // limitations under the License.
 package com.google.devtools.build.lib.util;
 
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.Maps;
 import com.google.devtools.build.lib.shell.Command;
 import com.google.devtools.build.lib.shell.CommandException;
-
+import java.io.File;
+import java.util.Map;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.io.File;
-import java.util.Map;
-
 @RunWith(JUnit4.class)
 public class CommandUtilsTest {
 
@@ -47,27 +45,27 @@
     } catch (CommandException exception) {
       String message = CommandUtils.describeCommandError(false, exception.getCommand());
       String verboseMessage = CommandUtils.describeCommandError(true, exception.getCommand());
-      assertEquals(
-          "error executing command this_command_will_not_be_found arg1 "
-          + "arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 "
-          + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
-          + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
-          + "arg27 arg28 arg29 arg30 "
-          + "... (remaining 9 argument(s) skipped)",
-          message);
-      assertEquals(
-          "error executing command \n"
-          + "  (cd /tmp && \\\n"
-          + "  exec env - \\\n"
-          + "    FOO=foo \\\n"
-          + "    PATH=/usr/bin:/bin:/sbin \\\n"
-          + "  this_command_will_not_be_found arg1 "
-          + "arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 "
-          + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
-          + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
-          + "arg27 arg28 arg29 arg30 arg31 arg32 arg33 arg34 "
-          + "arg35 arg36 arg37 arg38 arg39)",
-          verboseMessage);
+      assertThat(message)
+          .isEqualTo(
+              "error executing command this_command_will_not_be_found arg1 "
+                  + "arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 "
+                  + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
+                  + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
+                  + "arg27 arg28 arg29 arg30 "
+                  + "... (remaining 9 argument(s) skipped)");
+      assertThat(verboseMessage)
+          .isEqualTo(
+              "error executing command \n"
+                  + "  (cd /tmp && \\\n"
+                  + "  exec env - \\\n"
+                  + "    FOO=foo \\\n"
+                  + "    PATH=/usr/bin:/bin:/sbin \\\n"
+                  + "  this_command_will_not_be_found arg1 "
+                  + "arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 "
+                  + "arg11 arg12 arg13 arg14 arg15 arg16 arg17 arg18 "
+                  + "arg19 arg20 arg21 arg22 arg23 arg24 arg25 arg26 "
+                  + "arg27 arg28 arg29 arg30 arg31 arg32 arg33 arg34 "
+                  + "arg35 arg36 arg37 arg38 arg39)");
     }
   }
 
@@ -86,23 +84,23 @@
     } catch (CommandException exception) {
       String message = CommandUtils.describeCommandFailure(false, exception);
       String verboseMessage = CommandUtils.describeCommandFailure(true, exception);
-      assertEquals(
-          "sh failed: error executing command " +
-          "/bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42': " +
-          "Process exited with status 42\n" +
-          "Some output\n" +
-          "Some errors\n",
-          message);
-      assertEquals(
-          "sh failed: error executing command \n" +
-          "  (exec env - \\\n" +
-          "    FOO=foo \\\n" +
-          "    PATH=/usr/bin:/bin:/sbin \\\n" +
-          "  /bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42'): " +
-          "Process exited with status 42\n" +
-          "Some output\n" +
-          "Some errors\n",
-          verboseMessage);
+      assertThat(message)
+          .isEqualTo(
+              "sh failed: error executing command "
+                  + "/bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42': "
+                  + "Process exited with status 42\n"
+                  + "Some output\n"
+                  + "Some errors\n");
+      assertThat(verboseMessage)
+          .isEqualTo(
+              "sh failed: error executing command \n"
+                  + "  (exec env - \\\n"
+                  + "    FOO=foo \\\n"
+                  + "    PATH=/usr/bin:/bin:/sbin \\\n"
+                  + "  /bin/sh -c 'echo Some errors 1>&2; echo Some output; exit 42'): "
+                  + "Process exited with status 42\n"
+                  + "Some output\n"
+                  + "Some errors\n");
     }
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/DependencySetTest.java b/src/test/java/com/google/devtools/build/lib/util/DependencySetTest.java
index d8e2b27..b2ad2b9 100644
--- a/src/test/java/com/google/devtools/build/lib/util/DependencySetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/DependencySetTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.ImmutableList;
@@ -52,7 +51,7 @@
         " " + file2 + " ");
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies()).containsExactlyElementsIn(Sets.newHashSet(file1, file2));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   @Test
@@ -66,7 +65,7 @@
         " " + file2 + " ");
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies()).containsExactlyElementsIn(Sets.newHashSet(file1, file2));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   @Test
@@ -74,13 +73,11 @@
     Path file1 = fileSystem.getPath("/usr/local/blah/blah/genhello/hello.cc");
     Path file2 = fileSystem.getPath("/usr/local/blah/blah/genhello/hello.h");
     String filename = "hello.o";
-    Path dotd = scratch.file("/tmp/foo.d",
-        filename + ": \\\r"
-        + " " + file1 + " \\\r"
-        + " " + file2 + " ");
+    Path dotd =
+        scratch.file("/tmp/foo.d", filename + ": \\\r " + file1 + " \\\r " + file2 + " ");
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies()).containsExactlyElementsIn(Sets.newHashSet(file1, file2));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   @Test
@@ -88,13 +85,13 @@
     Path file1 = fileSystem.getPath("/usr/local/blah/blah/genhello/hello.cc");
     Path file2 = fileSystem.getPath("/usr/local/blah/blah/genhello/hello.h");
     String filename = "hello.o";
-    Path dotd = scratch.file("/tmp/foo.d",
-        "\r\n" + filename + ": \\\r\n"
-        + " " + file1 + " \\\r\n"
-        + " " + file2 + " ");
+    Path dotd =
+        scratch.file(
+            "/tmp/foo.d",
+            "\r\n" + filename + ": \\\r\n " + file1 + " \\\r\n " + file2 + " ");
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies()).containsExactlyElementsIn(Sets.newHashSet(file1, file2));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   @Test
@@ -111,7 +108,7 @@
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies())
         .containsExactlyElementsIn(Sets.newHashSet(file1, file2, file3, file4));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   @Test
@@ -125,7 +122,7 @@
         " " + file2.relativeTo(root) + " ");
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies()).containsExactlyElementsIn(Sets.newHashSet(file1, file2));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   @Test
@@ -136,7 +133,7 @@
     if (!headers.isEmpty()) {
       fail("Not empty: " + headers.size() + " " + headers);
     }
-    assertEquals(depset.getOutputFileName(), null);
+    assertThat(depset.getOutputFileName()).isNull();
   }
 
   @Test
@@ -203,7 +200,7 @@
         " " + file2 + " ");
     DependencySet depset = newDependencySet().read(dotd);
     assertThat(depset.getDependencies()).containsExactlyElementsIn(Sets.newHashSet(file1, file2));
-    assertEquals(depset.getOutputFileName(), filename);
+    assertThat(filename).isEqualTo(depset.getOutputFileName());
   }
 
   /*
@@ -240,12 +237,12 @@
 
     String dotdContents = new String(FileSystemUtils.readContentAsLatin1(dotd));
     String expected =
-        "usr/local/blah/blah/genhello/hello.o:  \\\n" +
-        "  /usr/local/blah/blah/genhello/hello.cc \\\n" +
-        "  /usr/local/blah/blah/genhello/hello.h \\\n" +
-        "  /usr/local/blah/blah/genhello/other.h\n";
-    assertEquals(expected, dotdContents);
-    assertEquals(filename, depSet1.getOutputFileName());
+        "usr/local/blah/blah/genhello/hello.o:  \\\n"
+            + "  /usr/local/blah/blah/genhello/hello.cc \\\n"
+            + "  /usr/local/blah/blah/genhello/hello.h \\\n"
+            + "  /usr/local/blah/blah/genhello/other.h\n";
+    assertThat(dotdContents).isEqualTo(expected);
+    assertThat(depSet1.getOutputFileName()).isEqualTo(filename);
   }
 
   @Test
@@ -263,9 +260,9 @@
     depSet1.write(dotd, ".d");
 
     DependencySet depSet2 = newDependencySet().read(dotd);
-    assertEquals(depSet1, depSet2);
+    assertThat(depSet2).isEqualTo(depSet1);
     // due to how pic.d files are written, absolute paths are changed into relatives
-    assertEquals(depSet1.getOutputFileName(), "/" + depSet2.getOutputFileName());
+    assertThat("/" + depSet2.getOutputFileName()).isEqualTo(depSet1.getOutputFileName());
   }
 
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/FileTypeTest.java b/src/test/java/com/google/devtools/build/lib/util/FileTypeTest.java
index bb13d18..f3da4d6 100644
--- a/src/test/java/com/google/devtools/build/lib/util/FileTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/FileTypeTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
@@ -116,17 +115,18 @@
 
   @Test
   public void justJava() {
-    assertEquals("Foo.java", filterAll(JAVA_SOURCE));
+    assertThat(filterAll(JAVA_SOURCE)).isEqualTo("Foo.java");
   }
 
   @Test
   public void javaAndCpp() {
-    assertEquals("Foo.java bar.cc", filterAll(JAVA_SOURCE, CPP_SOURCE));
+    assertThat(filterAll(JAVA_SOURCE, CPP_SOURCE)).isEqualTo("Foo.java bar.cc");
   }
 
   @Test
   public void allThree() {
-    assertEquals("Foo.java bar.cc baz.py", filterAll(JAVA_SOURCE, CPP_SOURCE, PYTHON_SOURCE));
+    assertThat(filterAll(JAVA_SOURCE, CPP_SOURCE, PYTHON_SOURCE))
+        .isEqualTo("Foo.java bar.cc baz.py");
   }
 
   private HasFilename filename(final String name) {
diff --git a/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java b/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java
index f7cac8c..5a3a8b6 100644
--- a/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.Lists;
@@ -74,7 +73,7 @@
   public void asStringOfExplicitOptions() throws Exception {
     OptionsParser parser = OptionsParser.newOptionsParser(IntrospectionExample.class);
     parser.parse("--alpha=no", "--gamma=no", "--echo=no");
-    assertEquals("--alpha=no --gamma=no", OptionsUtils.asShellEscapedString(parser));
+    assertThat(OptionsUtils.asShellEscapedString(parser)).isEqualTo("--alpha=no --gamma=no");
     assertThat(OptionsUtils.asArgumentList(parser))
         .containsExactly("--alpha=no", "--gamma=no")
         .inOrder();
@@ -85,7 +84,7 @@
     OptionsParser parser = OptionsParser.newOptionsParser(IntrospectionExample.class);
     parser.parse(OptionPriority.COMMAND_LINE, null, Arrays.asList("--alpha=no"));
     parser.parse(OptionPriority.COMPUTED_DEFAULT, null, Arrays.asList("--beta=no"));
-    assertEquals("--beta=no --alpha=no", OptionsUtils.asShellEscapedString(parser));
+    assertThat(OptionsUtils.asShellEscapedString(parser)).isEqualTo("--beta=no --alpha=no");
     assertThat(OptionsUtils.asArgumentList(parser))
         .containsExactly("--beta=no", "--alpha=no")
         .inOrder();
@@ -107,7 +106,7 @@
   public void asStringOfExplicitOptionsWithBooleans() throws Exception {
     OptionsParser parser = OptionsParser.newOptionsParser(BooleanOpts.class);
     parser.parse(OptionPriority.COMMAND_LINE, null, Arrays.asList("--b_one", "--nob_two"));
-    assertEquals("--b_one --nob_two", OptionsUtils.asShellEscapedString(parser));
+    assertThat(OptionsUtils.asShellEscapedString(parser)).isEqualTo("--b_one --nob_two");
     assertThat(OptionsUtils.asArgumentList(parser))
         .containsExactly("--b_one", "--nob_two")
         .inOrder();
@@ -116,7 +115,7 @@
     parser.parse(OptionPriority.COMMAND_LINE, null, Arrays.asList("--b_one=true", "--b_two=0"));
     assertThat(parser.getOptions(BooleanOpts.class).bOne).isTrue();
     assertThat(parser.getOptions(BooleanOpts.class).bTwo).isFalse();
-    assertEquals("--b_one --nob_two", OptionsUtils.asShellEscapedString(parser));
+    assertThat(OptionsUtils.asShellEscapedString(parser)).isEqualTo("--b_one --nob_two");
     assertThat(OptionsUtils.asArgumentList(parser))
         .containsExactly("--b_one", "--nob_two")
         .inOrder();
@@ -127,7 +126,7 @@
     OptionsParser parser = OptionsParser.newOptionsParser(IntrospectionExample.class);
     parser.parse(OptionPriority.COMMAND_LINE, null, Arrays.asList("--alpha=one"));
     parser.parse(OptionPriority.COMMAND_LINE, null, Arrays.asList("--alpha=two"));
-    assertEquals("--alpha=one --alpha=two", OptionsUtils.asShellEscapedString(parser));
+    assertThat(OptionsUtils.asShellEscapedString(parser)).isEqualTo("--alpha=one --alpha=two");
     assertThat(OptionsUtils.asArgumentList(parser))
         .containsExactly("--alpha=one", "--alpha=two")
         .inOrder();
@@ -147,23 +146,25 @@
 
   @Test
   public void emptyStringYieldsEmptyList() throws Exception {
-    assertEquals(list(), convert(""));
+    assertThat(convert("")).isEqualTo(list());
   }
 
   @Test
   public void lonelyDotYieldsLonelyDot() throws Exception {
-    assertEquals(list(fragment(".")), convert("."));
+    assertThat(convert(".")).containsExactly(fragment("."));
   }
 
   @Test
   public void converterSkipsEmptyStrings() throws Exception {
-    assertEquals(list(fragment("foo"), fragment("bar")), convert("foo::bar:"));
+    assertThat(convert("foo::bar:")).containsExactly(fragment("foo"), fragment("bar")).inOrder();
   }
 
   @Test
   public void multiplePaths() throws Exception {
-    assertEquals(list(fragment("foo"), fragment("/bar/baz"), fragment("."),
-                 fragment("/tmp/bang")), convert("foo:/bar/baz:.:/tmp/bang"));
+    assertThat(convert("foo:/bar/baz:.:/tmp/bang"))
+        .containsExactly(
+            fragment("foo"), fragment("/bar/baz"), fragment("."), fragment("/tmp/bang"))
+        .inOrder();
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/util/PairTest.java b/src/test/java/com/google/devtools/build/lib/util/PairTest.java
index 2dd9c80..15879b4 100644
--- a/src/test/java/com/google/devtools/build/lib/util/PairTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/PairTest.java
@@ -14,8 +14,8 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
+import com.google.common.testing.EqualsTester;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -33,7 +33,7 @@
     Pair<Object, Object> p = Pair.of(a, b);
     assertThat(p.first).isSameAs(a);
     assertThat(p.second).isSameAs(b);
-    assertEquals(Pair.of(a, b), p);
+    assertThat(p).isEqualTo(Pair.of(a, b));
     assertThat(p.hashCode()).isEqualTo(31 * a.hashCode() + b.hashCode());
   }
 
@@ -43,6 +43,6 @@
     assertThat(p.first).isNull();
     assertThat(p.second).isNull();
     p.hashCode(); // Should not throw.
-    assertEquals(p, p);
+    new EqualsTester().addEqualityGroup(p).testEquals();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/PathFragmentFilterTest.java b/src/test/java/com/google/devtools/build/lib/util/PathFragmentFilterTest.java
index 2d51434..c9a2b3f 100644
--- a/src/test/java/com/google/devtools/build/lib/util/PathFragmentFilterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/PathFragmentFilterTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.devtools.build.lib.vfs.PathFragment;
 import org.junit.Test;
@@ -87,7 +86,7 @@
     assertExcluded("e");
     // When converted back to string, inclusion entries will be put first, followed by exclusion
     // entries.
-    assertEquals("a,d,a/b/c,a/b/d,-c,-a/b", filter.toString());
+    assertThat(filter.toString()).isEqualTo("a,d,a/b/c,a/b/d,-c,-a/b");
   }
 
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/RegexFilterTest.java b/src/test/java/com/google/devtools/build/lib/util/RegexFilterTest.java
index 503d065..c00cbc4 100644
--- a/src/test/java/com/google/devtools/build/lib/util/RegexFilterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/RegexFilterTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import com.google.common.testing.EqualsTester;
@@ -53,7 +52,7 @@
   @Test
   public void inclusions() throws Exception {
     createFilter("a/b,+^c,_test$");
-    assertEquals("(?:(?>a/b)|(?>^c)|(?>_test$))", filter.toString());
+    assertThat(filter.toString()).isEqualTo("(?:(?>a/b)|(?>^c)|(?>_test$))");
     assertIncluded("a/b");
     assertIncluded("a/b/c");
     assertIncluded("c");
@@ -70,7 +69,7 @@
   @Test
   public void exclusions() throws Exception {
     createFilter("-a/b,-^c,-_test$");
-    assertEquals("-(?:(?>a/b)|(?>^c)|(?>_test$))", filter.toString());
+    assertThat(filter.toString()).isEqualTo("-(?:(?>a/b)|(?>^c)|(?>_test$))");
     assertExcluded("a/b");
     assertExcluded("a/b/c");
     assertExcluded("c");
@@ -87,7 +86,8 @@
   @Test
   public void inclusionsAndExclusions() throws Exception {
     createFilter("a,-^c,,-,+,d,+a/b/c,-a/b,a/b/d");
-    assertEquals("(?:(?>a)|(?>d)|(?>a/b/c)|(?>a/b/d)),-(?:(?>^c)|(?>a/b))", filter.toString());
+    assertThat(filter.toString())
+        .isEqualTo("(?:(?>a)|(?>d)|(?>a/b/c)|(?>a/b/d)),-(?:(?>^c)|(?>a/b))");
     assertIncluded("a");
     assertIncluded("a/c");
     assertExcluded("a/b");
@@ -103,7 +103,7 @@
   @Test
   public void commas() throws Exception {
     createFilter("a\\,b,c\\,d");
-    assertEquals("(?:(?>a\\,b)|(?>c\\,d))", filter.toString());
+    assertThat(filter.toString()).isEqualTo("(?:(?>a\\,b)|(?>c\\,d))");
     assertIncluded("a,b");
     assertIncluded("c,d");
     assertExcluded("a");
diff --git a/src/test/java/com/google/devtools/build/lib/util/ResourceFileLoaderTest.java b/src/test/java/com/google/devtools/build/lib/util/ResourceFileLoaderTest.java
index d1e2889..0f00b75 100644
--- a/src/test/java/com/google/devtools/build/lib/util/ResourceFileLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/ResourceFileLoaderTest.java
@@ -14,15 +14,13 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
+import java.io.IOException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.io.IOException;
-
 /**
  * A test for {@link ResourceFileLoader}.
  */
@@ -33,7 +31,7 @@
   public void loader() throws IOException {
     String message = ResourceFileLoader.loadResource(
         ResourceFileLoaderTest.class, "ResourceFileLoaderTest.message");
-    assertEquals("Hello, world.", message);
+    assertThat(message).isEqualTo("Hello, world.");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/util/ShellEscaperTest.java b/src/test/java/com/google/devtools/build/lib/util/ShellEscaperTest.java
index ad8f336..cad9ce5 100644
--- a/src/test/java/com/google/devtools/build/lib/util/ShellEscaperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/ShellEscaperTest.java
@@ -13,19 +13,17 @@
 // limitations under the License.
 package com.google.devtools.build.lib.util;
 
+import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.util.ShellEscaper.escapeString;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableSet;
-
+import java.util.Arrays;
+import java.util.Set;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.util.Arrays;
-import java.util.Set;
-
 /**
  * Tests for {@link ShellEscaper}.
  *
@@ -36,41 +34,42 @@
 
   @Test
   public void shellEscape() throws Exception {
-    assertEquals("''", escapeString(""));
-    assertEquals("foo", escapeString("foo"));
-    assertEquals("'foo bar'", escapeString("foo bar"));
-    assertEquals("''\\''foo'\\'''", escapeString("'foo'"));
-    assertEquals("'\\'\\''foo\\'\\'''", escapeString("\\'foo\\'"));
-    assertEquals("'${filename%.c}.o'", escapeString("${filename%.c}.o"));
-    assertEquals("'<html!>'", escapeString("<html!>"));
+    assertThat(escapeString("")).isEqualTo("''");
+    assertThat(escapeString("foo")).isEqualTo("foo");
+    assertThat(escapeString("foo bar")).isEqualTo("'foo bar'");
+    assertThat(escapeString("'foo'")).isEqualTo("''\\''foo'\\'''");
+    assertThat(escapeString("\\'foo\\'")).isEqualTo("'\\'\\''foo\\'\\'''");
+    assertThat(escapeString("${filename%.c}.o")).isEqualTo("'${filename%.c}.o'");
+    assertThat(escapeString("<html!>")).isEqualTo("'<html!>'");
   }
 
   @Test
   public void escapeAll() throws Exception {
     Set<String> escaped = ImmutableSet.copyOf(
         ShellEscaper.escapeAll(Arrays.asList("foo", "@bar", "baz'qux")));
-    assertEquals(ImmutableSet.of("foo", "@bar", "'baz'\\''qux'"), escaped);
+    assertThat(escaped).containsExactly("foo", "@bar", "'baz'\\''qux'");
   }
 
   @Test
   public void escapeJoinAllIntoAppendable() throws Exception {
     Appendable appendable = ShellEscaper.escapeJoinAll(
         new StringBuilder("initial"), Arrays.asList("foo", "$BAR"));
-    assertEquals("initialfoo '$BAR'", appendable.toString());
+    assertThat(appendable.toString()).isEqualTo("initialfoo '$BAR'");
   }
 
   @Test
   public void escapeJoinAllIntoAppendableWithCustomJoiner() throws Exception {
     Appendable appendable = ShellEscaper.escapeJoinAll(
         new StringBuilder("initial"), Arrays.asList("foo", "$BAR"), Joiner.on('|'));
-    assertEquals("initialfoo|'$BAR'", appendable.toString());
+    assertThat(appendable.toString()).isEqualTo("initialfoo|'$BAR'");
   }
 
   @Test
   public void escapeJoinAll() throws Exception {
     String actual = ShellEscaper.escapeJoinAll(
         Arrays.asList("foo", "@echo:-", "100", "$US", "a b", "\"qu'ot'es\"", "\"quot\"", "\\"));
-    assertEquals("foo @echo:- 100 '$US' 'a b' '\"qu'\\''ot'\\''es\"' '\"quot\"' '\\'", actual);
+    assertThat(actual)
+        .isEqualTo("foo @echo:- 100 '$US' 'a b' '\"qu'\\''ot'\\''es\"' '\"quot\"' '\\'");
   }
 
   @Test
@@ -78,6 +77,7 @@
     String actual = ShellEscaper.escapeJoinAll(
         Arrays.asList("foo", "@echo:-", "100", "$US", "a b", "\"qu'ot'es\"", "\"quot\"", "\\"),
         Joiner.on('|'));
-    assertEquals("foo|@echo:-|100|'$US'|'a b'|'\"qu'\\''ot'\\''es\"'|'\"quot\"'|'\\'", actual);
+    assertThat(actual)
+        .isEqualTo("foo|@echo:-|100|'$US'|'a b'|'\"qu'\\''ot'\\''es\"'|'\"quot\"'|'\\'");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/StringIndexerTest.java b/src/test/java/com/google/devtools/build/lib/util/StringIndexerTest.java
index 9aeb907..01a6181 100644
--- a/src/test/java/com/google/devtools/build/lib/util/StringIndexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/StringIndexerTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.base.Function;
 import com.google.common.base.Strings;
@@ -112,7 +111,7 @@
     }
     for (String key : keys) {
       // Validate mapping between keys and indices.
-      assertEquals(key, indexer.getStringForIndex(indexer.getIndex(key)));
+      assertThat(indexer.getStringForIndex(indexer.getIndex(key))).isEqualTo(key);
     }
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/util/StringUtilTest.java b/src/test/java/com/google/devtools/build/lib/util/StringUtilTest.java
index 5331931..456e827 100644
--- a/src/test/java/com/google/devtools/build/lib/util/StringUtilTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/StringUtilTest.java
@@ -19,7 +19,6 @@
 import static com.google.devtools.build.lib.util.StringUtil.joinEnglishList;
 import static com.google.devtools.build.lib.util.StringUtil.splitAndInternString;
 import static com.google.devtools.build.lib.util.StringUtil.stripSuffix;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
@@ -35,20 +34,16 @@
 
   @Test
   public void testJoinEnglishList() throws Exception {
-    assertEquals("nothing",
-        joinEnglishList(Collections.emptyList()));
-    assertEquals("one",
-        joinEnglishList(Arrays.asList("one")));
-    assertEquals("one or two",
-        joinEnglishList(Arrays.asList("one", "two")));
-    assertEquals("one and two",
-        joinEnglishList(Arrays.asList("one", "two"), "and"));
-    assertEquals("one, two or three",
-        joinEnglishList(Arrays.asList("one", "two", "three")));
-    assertEquals("one, two and three",
-        joinEnglishList(Arrays.asList("one", "two", "three"), "and"));
-    assertEquals("'one', 'two' and 'three'",
-        joinEnglishList(Arrays.asList("one", "two", "three"), "and", "'"));
+    assertThat(joinEnglishList(Collections.emptyList())).isEqualTo("nothing");
+    assertThat(joinEnglishList(Arrays.asList("one"))).isEqualTo("one");
+    assertThat(joinEnglishList(Arrays.asList("one", "two"))).isEqualTo("one or two");
+    assertThat(joinEnglishList(Arrays.asList("one", "two"), "and")).isEqualTo("one and two");
+    assertThat(joinEnglishList(Arrays.asList("one", "two", "three")))
+        .isEqualTo("one, two or three");
+    assertThat(joinEnglishList(Arrays.asList("one", "two", "three"), "and"))
+        .isEqualTo("one, two and three");
+    assertThat(joinEnglishList(Arrays.asList("one", "two", "three"), "and", "'"))
+        .isEqualTo("'one', 'two' and 'three'");
   }
 
   @Test
@@ -67,40 +62,47 @@
 
   @Test
   public void listItemsWithLimit() throws Exception {
-    assertEquals("begin/a, b, c/end", StringUtil.listItemsWithLimit(
-        new StringBuilder("begin/"), 3, ImmutableList.of("a", "b", "c")).append("/end").toString());
+    assertThat(
+            StringUtil.listItemsWithLimit(
+                    new StringBuilder("begin/"), 3, ImmutableList.of("a", "b", "c"))
+                .append("/end")
+                .toString())
+        .isEqualTo("begin/a, b, c/end");
 
-    assertEquals("begin/a, b, c ...(omitting 2 more item(s))/end", StringUtil.listItemsWithLimit(
-        new StringBuilder("begin/"), 3, ImmutableList.of("a", "b", "c", "d", "e"))
-            .append("/end").toString());
+    assertThat(
+            StringUtil.listItemsWithLimit(
+                    new StringBuilder("begin/"), 3, ImmutableList.of("a", "b", "c", "d", "e"))
+                .append("/end")
+                .toString())
+        .isEqualTo("begin/a, b, c ...(omitting 2 more item(s))/end");
   }
 
   @Test
   public void testIndent() throws Exception {
     assertThat(indent("", 0)).isEmpty();
     assertThat(indent("", 1)).isEmpty();
-    assertEquals("a", indent("a", 1));
-    assertEquals("\n  a", indent("\na", 2));
-    assertEquals("a\n  b", indent("a\nb", 2));
-    assertEquals("a\n b\n c\n d", indent("a\nb\nc\nd", 1));
-    assertEquals("\n ", indent("\n", 1));
+    assertThat(indent("a", 1)).isEqualTo("a");
+    assertThat(indent("\na", 2)).isEqualTo("\n  a");
+    assertThat(indent("a\nb", 2)).isEqualTo("a\n  b");
+    assertThat(indent("a\nb\nc\nd", 1)).isEqualTo("a\n b\n c\n d");
+    assertThat(indent("\n", 1)).isEqualTo("\n ");
   }
 
   @Test
   public void testStripSuffix() throws Exception {
     assertThat(stripSuffix("", "")).isEmpty();
     assertThat(stripSuffix("", "a")).isNull();
-    assertEquals("a", stripSuffix("a", ""));
-    assertEquals("a", stripSuffix("aa", "a"));
+    assertThat(stripSuffix("a", "")).isEqualTo("a");
+    assertThat(stripSuffix("aa", "a")).isEqualTo("a");
     assertThat(stripSuffix("ab", "c")).isNull();
   }
 
   @Test
   public void testCapitalize() throws Exception {
     assertThat(capitalize("")).isEmpty();
-    assertEquals("Joe", capitalize("joe"));
-    assertEquals("Joe", capitalize("Joe"));
-    assertEquals("O", capitalize("o"));
-    assertEquals("O", capitalize("O"));
+    assertThat(capitalize("joe")).isEqualTo("Joe");
+    assertThat(capitalize("Joe")).isEqualTo("Joe");
+    assertThat(capitalize("o")).isEqualTo("O");
+    assertThat(capitalize("O")).isEqualTo("O");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/StringUtilitiesTest.java b/src/test/java/com/google/devtools/build/lib/util/StringUtilitiesTest.java
index c6ed9bf..0b09fa6 100644
--- a/src/test/java/com/google/devtools/build/lib/util/StringUtilitiesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/StringUtilitiesTest.java
@@ -18,7 +18,6 @@
 import static com.google.devtools.build.lib.util.StringUtilities.joinLines;
 import static com.google.devtools.build.lib.util.StringUtilities.layoutTable;
 import static com.google.devtools.build.lib.util.StringUtilities.prettyPrintBytes;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.Maps;
@@ -42,13 +41,13 @@
 
   @Test
   public void twoLinesGetjoinedNicely() {
-    assertEquals("line 1\nline 2", joinLines("line 1", "line 2"));
+    assertThat(joinLines("line 1", "line 2")).isEqualTo("line 1\nline 2");
   }
 
   @Test
   public void aTrailingNewlineIsAvailableWhenYouNeedIt() {
-    assertEquals("two lines\nwith trailing newline\n",
-        joinLines("two lines", "with trailing newline", ""));
+    assertThat(joinLines("two lines", "with trailing newline", ""))
+        .isEqualTo("two lines\nwith trailing newline\n");
   }
 
   // Tests of StringUtilities.combineKeys()
@@ -56,7 +55,7 @@
   /** Simple sanity test of format */
   @Test
   public void combineKeysFormat() {
-    assertEquals("<a><b!!c><!<d!>>", combineKeys("a", "b!c", "<d>"));
+    assertThat(combineKeys("a", "b!c", "<d>")).isEqualTo("<a><b!!c><!<d!>>");
   }
 
   /**
@@ -112,11 +111,9 @@
 
   @Test
   public void replaceAllLiteral() throws Exception {
-    assertEquals("ababab",
-                 StringUtilities.replaceAllLiteral("bababa", "ba", "ab"));
+    assertThat(StringUtilities.replaceAllLiteral("bababa", "ba", "ab")).isEqualTo("ababab");
     assertThat(StringUtilities.replaceAllLiteral("bababa", "ba", "")).isEmpty();
-    assertEquals("bababa",
-        StringUtilities.replaceAllLiteral("bababa", "", "ab"));
+    assertThat(StringUtilities.replaceAllLiteral("bababa", "", "ab")).isEqualTo("bababa");
   }
 
   @Test
@@ -126,9 +123,8 @@
     data.put("bang", "baz");
     data.put("lengthy key", "lengthy value");
 
-    assertEquals(joinLines("bang: baz",
-                           "foo: bar",
-                           "lengthy key: lengthy value"), layoutTable(data));
+    assertThat(layoutTable(data))
+        .isEqualTo(joinLines("bang: baz", "foo: bar", "lengthy key: lengthy value"));
   }
 
   @Test
@@ -151,17 +147,17 @@
     };
     double x = 2.3456;
     for (int ii = 0; ii < expected.length; ++ii) {
-      assertEquals(expected[ii], prettyPrintBytes((long) x));
+      assertThat(prettyPrintBytes((long) x)).isEqualTo(expected[ii]);
       x = x * 10.0;
     }
   }
 
   @Test
   public void sanitizeControlChars() {
-    assertEquals("<?>", StringUtilities.sanitizeControlChars("\000"));
-    assertEquals("<?>", StringUtilities.sanitizeControlChars("\001"));
-    assertEquals("\\r", StringUtilities.sanitizeControlChars("\r"));
-    assertEquals(" abc123", StringUtilities.sanitizeControlChars(" abc123"));
+    assertThat(StringUtilities.sanitizeControlChars("\000")).isEqualTo("<?>");
+    assertThat(StringUtilities.sanitizeControlChars("\001")).isEqualTo("<?>");
+    assertThat(StringUtilities.sanitizeControlChars("\r")).isEqualTo("\\r");
+    assertThat(StringUtilities.sanitizeControlChars(" abc123")).isEqualTo(" abc123");
   }
 
   @Test
@@ -187,9 +183,9 @@
 
   @Test
   public void toPythonStyleFunctionName() {
-    assertEquals("a", StringUtilities.toPythonStyleFunctionName("a"));
-    assertEquals("a_b", StringUtilities.toPythonStyleFunctionName("aB"));
-    assertEquals("a_b_c", StringUtilities.toPythonStyleFunctionName("aBC"));
-    assertEquals("a_bc_d", StringUtilities.toPythonStyleFunctionName("aBcD"));
+    assertThat(StringUtilities.toPythonStyleFunctionName("a")).isEqualTo("a");
+    assertThat(StringUtilities.toPythonStyleFunctionName("aB")).isEqualTo("a_b");
+    assertThat(StringUtilities.toPythonStyleFunctionName("aBC")).isEqualTo("a_b_c");
+    assertThat(StringUtilities.toPythonStyleFunctionName("aBcD")).isEqualTo("a_bc_d");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/AnsiTerminalPrinterTest.java b/src/test/java/com/google/devtools/build/lib/util/io/AnsiTerminalPrinterTest.java
index 886737a..56d8712 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/AnsiTerminalPrinterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/AnsiTerminalPrinterTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util.io;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.devtools.build.lib.testutil.MoreAsserts;
 import com.google.devtools.build.lib.util.io.AnsiTerminalPrinter.Mode;
@@ -43,7 +42,7 @@
   }
 
   private void assertString(String string) {
-    assertEquals(string, stream.toString());
+    assertThat(stream.toString()).isEqualTo(string);
   }
 
   private void assertRegex(String regex) {
@@ -79,7 +78,7 @@
     assertThat(codes).hasLength(8);
     for (int i = 0; i < 4; i++) {
       assertThat(codes[i]).isNotEmpty();
-      assertEquals(codes[i], codes[i+4]);
+      assertThat(codes[i + 4]).isEqualTo(codes[i]);
     }
     assertThat(codes[0].equals(codes[1])).isFalse();
     assertThat(codes[0].equals(codes[2])).isFalse();
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/DelegatingOutErrTest.java b/src/test/java/com/google/devtools/build/lib/util/io/DelegatingOutErrTest.java
index 84af875..738dadb 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/DelegatingOutErrTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/DelegatingOutErrTest.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.util.io;
 
+import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.util.StringUtilities.joinLines;
-import static org.junit.Assert.assertEquals;
 
 import org.junit.After;
 import org.junit.Before;
@@ -56,7 +56,7 @@
     delegate.printOutLn("... and alone again ...");
     delegate.addSink(sink);
     delegate.printOutLn("How are things?");
-    assertEquals("Hello, sink.\nHow are things?\n", sink.outAsLatin1());
+    assertThat(sink.outAsLatin1()).isEqualTo("Hello, sink.\nHow are things?\n");
   }
 
   @Test
@@ -74,9 +74,8 @@
     delegate.addSink(left);
     delegate.addSink(right);
     delegate.printOutLn("left and right");
-    assertEquals(joinLines("left only", "both", "left and right", ""),
-                 left.outAsLatin1());
-    assertEquals(joinLines("both", "right only", "left and right", ""),
-                 right.outAsLatin1());
+    assertThat(left.outAsLatin1()).isEqualTo(joinLines("left only", "both", "left and right", ""));
+    assertThat(right.outAsLatin1())
+        .isEqualTo(joinLines("both", "right only", "left and right", ""));
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/LinePrefixingOutputStreamTest.java b/src/test/java/com/google/devtools/build/lib/util/io/LinePrefixingOutputStreamTest.java
index 543c16b..a77d120 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/LinePrefixingOutputStreamTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/LinePrefixingOutputStreamTest.java
@@ -15,14 +15,12 @@
 
 import static com.google.common.truth.Truth.assertThat;
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /**
  * Tests {@link LinePrefixingOutputStream}.
@@ -52,22 +50,20 @@
   public void testOutputIfFlushed() throws IOException {
     prefixOut.write(bytes("We'll flush after this line."));
     prefixOut.flush();
-    assertEquals("Prefix: We'll flush after this line.\n",
-                 string(out.toByteArray()));
+    assertThat(string(out.toByteArray())).isEqualTo("Prefix: We'll flush after this line.\n");
   }
 
   @Test
   public void testAutoflushUponNewline() throws IOException {
     prefixOut.write(bytes("Hello, newline.\n"));
-    assertEquals("Prefix: Hello, newline.\n", string(out.toByteArray()));
+    assertThat(string(out.toByteArray())).isEqualTo("Prefix: Hello, newline.\n");
   }
 
   @Test
   public void testAutoflushUponEmbeddedNewLine() throws IOException {
     prefixOut.write(bytes("Hello line1.\nHello line2.\nHello line3.\n"));
-    assertEquals(
-        "Prefix: Hello line1.\nPrefix: Hello line2.\nPrefix: Hello line3.\n",
-        string(out.toByteArray()));
+    assertThat(string(out.toByteArray()))
+        .isEqualTo("Prefix: Hello line1.\nPrefix: Hello line2.\nPrefix: Hello line3.\n");
   }
 
   @Test
@@ -82,8 +78,7 @@
     prefixOut.write(bytes(junk + junk));
     prefixOut.write(bytes(junk + junk));
     prefixOut.write(bytes("x"));
-    assertEquals("Prefix: " + junk + "\n" + "Prefix: " + junk + "\n"
-        + "Prefix: " + junk + "\n" + "Prefix: " + junk + "\n",
-        string(out.toByteArray()));
+    assertThat(string(out.toByteArray())).isEqualTo("Prefix: " + junk + "\nPrefix: " + junk
+        + "\nPrefix: " + junk + "\nPrefix: " + junk + "\n");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java b/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java
index a7a39d2..0a2b5a6 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java
@@ -13,14 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.util.io;
 
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
 
+import java.io.IOException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.io.IOException;
-
 /**
  * Tests {@link LineWrappingAnsiTerminalWriter}.
  */
@@ -35,14 +34,14 @@
   public void testSimpleLineWrapping() throws IOException {
     LoggingTerminalWriter terminal = new LoggingTerminalWriter();
     (new LineWrappingAnsiTerminalWriter(terminal, 5, '+')).append("abcdefghij");
-    assertEquals("abcd+" + NL + "efgh+" + NL + "ij", terminal.getTranscript());
+    assertThat(terminal.getTranscript()).isEqualTo("abcd+" + NL + "efgh+" + NL + "ij");
   }
 
   @Test
   public void testAlwaysWrap() throws IOException {
     LoggingTerminalWriter terminal = new LoggingTerminalWriter();
     (new LineWrappingAnsiTerminalWriter(terminal, 5, '+')).append("12345").newline();
-    assertEquals("1234+" + NL + "5" + NL, terminal.getTranscript());
+    assertThat(terminal.getTranscript()).isEqualTo("1234+" + NL + "5" + NL);
   }
 
   @Test
@@ -52,14 +51,14 @@
     // Lines are only wrapped, once a character is written that cannot fit in the current line, and
     // not already once the last usable character of a line is used. Hence, in this example, we do
     // not want to see the continuation character.
-    assertEquals("1234", terminal.getTranscript());
+    assertThat(terminal.getTranscript()).isEqualTo("1234");
   }
 
   @Test
   public void testNewlineTranslated() throws IOException {
     LoggingTerminalWriter terminal = new LoggingTerminalWriter();
     (new LineWrappingAnsiTerminalWriter(terminal, 80, '+')).append("foo\nbar\n");
-    assertEquals("foo" + NL + "bar" + NL, terminal.getTranscript());
+    assertThat(terminal.getTranscript()).isEqualTo("foo" + NL + "bar" + NL);
   }
 
   @Test
@@ -72,7 +71,8 @@
         .newline()
         .append("ABC\nABC")
         .newline();
-    assertEquals("123" + NL + "abc" + NL + "ABC" + NL + "ABC" + NL, terminal.getTranscript());
+    assertThat(terminal.getTranscript())
+        .isEqualTo("123" + NL + "abc" + NL + "ABC" + NL + "ABC" + NL);
   }
 
   @Test
@@ -85,6 +85,6 @@
         .append("fail")
         .normal()
         .append("normal");
-    assertEquals(OK + "ok" + FAIL + "fail" + NORMAL + "normal", terminal.getTranscript());
+    assertThat(terminal.getTranscript()).isEqualTo(OK + "ok" + FAIL + "fail" + NORMAL + "normal");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/OutErrTest.java b/src/test/java/com/google/devtools/build/lib/util/io/OutErrTest.java
index 0afcb31..d9f0e17 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/OutErrTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/OutErrTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util.io;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import java.io.ByteArrayOutputStream;
 import org.junit.Test;
@@ -38,39 +37,39 @@
   @Test
   public void testPrintsToOut() {
     outErr.printOut("Hello, world.");
-    assertEquals("Hello, world.", new String(out.toByteArray()));
+    assertThat(new String(out.toByteArray())).isEqualTo("Hello, world.");
   }
 
   @Test
   public void testPrintsToErr() {
     outErr.printErr("Hello, moon.");
-    assertEquals("Hello, moon.", new String(err.toByteArray()));
+    assertThat(new String(err.toByteArray())).isEqualTo("Hello, moon.");
   }
 
   @Test
   public void testPrintsToOutWithANewline() {
     outErr.printOutLn("With a newline.");
-    assertEquals("With a newline.\n", new String(out.toByteArray()));
+    assertThat(new String(out.toByteArray())).isEqualTo("With a newline.\n");
   }
 
   @Test
-  public void testPrintsToErrWithANewline(){
+  public void testPrintsToErrWithANewline() {
     outErr.printErrLn("With a newline.");
-    assertEquals("With a newline.\n", new String(err.toByteArray()));
+    assertThat(new String(err.toByteArray())).isEqualTo("With a newline.\n");
   }
 
   @Test
   public void testPrintsTwoLinesToOut() {
     outErr.printOutLn("line 1");
     outErr.printOutLn("line 2");
-    assertEquals("line 1\nline 2\n", new String(out.toByteArray()));
+    assertThat(new String(out.toByteArray())).isEqualTo("line 1\nline 2\n");
   }
 
   @Test
   public void testPrintsTwoLinesToErr() {
     outErr.printErrLn("line 1");
     outErr.printErrLn("line 2");
-    assertEquals("line 1\nline 2\n", new String(err.toByteArray()));
+    assertThat(new String(err.toByteArray())).isEqualTo("line 1\nline 2\n");
   }
 
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriterTest.java b/src/test/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriterTest.java
index 2aef6ff..6444a99 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriterTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util.io;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
 import org.junit.Test;
@@ -39,7 +38,7 @@
     terminalWriter.append(sample);
 
     assertThat(terminalWriter.getPosition()).isEqualTo(sample.length());
-    assertEquals(sample, loggingTerminalWriter.getTranscript());
+    assertThat(loggingTerminalWriter.getTranscript()).isEqualTo(sample);
   }
 
   @Test
@@ -59,7 +58,7 @@
     assertThat(terminalWriter.getPosition()).isEqualTo(secondLine.length());
     terminalWriter.newline();
     assertThat(terminalWriter.getPosition()).isEqualTo(0);
-    assertEquals(firstLine + NL + secondLine + NL, loggingTerminalWriter.getTranscript());
+    assertThat(loggingTerminalWriter.getTranscript()).isEqualTo(firstLine + NL + secondLine + NL);
   }
 
   @Test
@@ -75,7 +74,7 @@
     assertThat(terminalWriter.getPosition()).isEqualTo(secondLine.length());
     terminalWriter.append("\n");
     assertThat(terminalWriter.getPosition()).isEqualTo(0);
-    assertEquals(firstLine + NL + secondLine + NL, loggingTerminalWriter.getTranscript());
+    assertThat(loggingTerminalWriter.getTranscript()).isEqualTo(firstLine + NL + secondLine + NL);
   }
 
   @Test
@@ -92,9 +91,8 @@
         .append("fail")
         .normal()
         .append("normal");
-    assertEquals(
-        "abc" + OK + "ok" + FAIL + "fail" + NORMAL + "normal",
-        loggingTerminalWriter.getTranscript());
+    assertThat(loggingTerminalWriter.getTranscript())
+        .isEqualTo("abc" + OK + "ok" + FAIL + "fail" + NORMAL + "normal");
   }
 
   @Test
@@ -109,6 +107,6 @@
     assertThat(terminalWriter.getPosition()).isEqualTo(0);
     terminalWriter.append(sample);
     assertThat(terminalWriter.getPosition()).isEqualTo(sample.length());
-    assertEquals(FAIL + sample, loggingTerminalWriter.getTranscript());
+    assertThat(loggingTerminalWriter.getTranscript()).isEqualTo(FAIL + sample);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/RecordingOutErrTest.java b/src/test/java/com/google/devtools/build/lib/util/io/RecordingOutErrTest.java
index 435ffb5..6fa127d 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/RecordingOutErrTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/RecordingOutErrTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util.io;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import java.io.PrintWriter;
 import org.junit.Test;
@@ -47,8 +46,8 @@
     writer.println("Testerr2");
     writer.flush();
 
-    assertEquals("Testout1\nTestout2\n", outErr.outAsLatin1());
-    assertEquals("Testerr1\nTesterr2\n", outErr.errAsLatin1());
+    assertThat(outErr.outAsLatin1()).isEqualTo("Testout1\nTestout2\n");
+    assertThat(outErr.errAsLatin1()).isEqualTo("Testerr1\nTesterr2\n");
 
     assertThat(outErr.hasRecordedOutput()).isTrue();
 
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/StreamDemultiplexerTest.java b/src/test/java/com/google/devtools/build/lib/util/io/StreamDemultiplexerTest.java
index ba06bb8..81409f3 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/StreamDemultiplexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/StreamDemultiplexerTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.util.io;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStream;
@@ -57,7 +56,7 @@
     try (final StreamDemultiplexer demux = new StreamDemultiplexer((byte) 1, out)) {
       demux.write(multiplexed);
     }
-    assertEquals("Hello, world.", out.toString("ISO-8859-1"));
+    assertThat(out.toString("ISO-8859-1")).isEqualTo("Hello, world.");
   }
 
   @Test
@@ -66,9 +65,9 @@
     try (final StreamDemultiplexer demux = new StreamDemultiplexer((byte) 1, out, err, ctl)) {
       demux.write(multiplexed);
     }
-    assertEquals("out", toAnsi(out));
-    assertEquals("err", toAnsi(err));
-    assertEquals("ctl", toAnsi(ctl));
+    assertThat(toAnsi(out)).isEqualTo("out");
+    assertThat(toAnsi(err)).isEqualTo("err");
+    assertThat(toAnsi(ctl)).isEqualTo("ctl");
   }
 
   @Test
@@ -77,7 +76,7 @@
     try (final StreamDemultiplexer demux = new StreamDemultiplexer((byte) 1, out)) {
       demux.write(multiplexed);
     }
-    assertEquals("just one line", out.toString("ISO-8859-1"));
+    assertThat(out.toString("ISO-8859-1")).isEqualTo("just one line");
   }
 
   @Test
@@ -87,7 +86,7 @@
     OutputStream out = mux.createStdout();
     out.write(inAnsi("Hello, world."));
     out.flush();
-    assertEquals("Hello, world.", toAnsi(this.out));
+    assertThat(toAnsi(this.out)).isEqualTo("Hello, world.");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java b/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java
index 47dfb23..fd787c4 100644
--- a/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java
@@ -14,8 +14,6 @@
 package com.google.devtools.build.lib.windows;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -77,14 +75,14 @@
   }
 
   private void assertAsFragmentWorks(String expected) {
-    assertEquals(PathFragment.create(expected), filesystem.getPath(expected).asFragment());
+    assertThat(filesystem.getPath(expected).asFragment()).isEqualTo(PathFragment.create(expected));
   }
 
   @Test
   public void testWindowsPath() {
     Path p = filesystem.getPath("C:/foo/bar");
-    assertEquals("C:/foo/bar", p.getPathString());
-    assertEquals("C:/foo/bar", p.toString());
+    assertThat(p.getPathString()).isEqualTo("C:/foo/bar");
+    assertThat(p.toString()).isEqualTo("C:/foo/bar");
   }
 
   @Test
@@ -99,29 +97,29 @@
   @Test
   public void testGetRelativeWithFragmentWindows() {
     Path dir = filesystem.getPath("C:/first/x");
-    assertEquals("C:/first/x/y", dir.getRelative(PathFragment.create("y")).toString());
-    assertEquals("C:/first/x/x", dir.getRelative(PathFragment.create("./x")).toString());
-    assertEquals("C:/first/y", dir.getRelative(PathFragment.create("../y")).toString());
-    assertEquals("C:/first/y", dir.getRelative(PathFragment.create("../y")).toString());
-    assertEquals("C:/y", dir.getRelative(PathFragment.create("../../../y")).toString());
+    assertThat(dir.getRelative(PathFragment.create("y")).toString()).isEqualTo("C:/first/x/y");
+    assertThat(dir.getRelative(PathFragment.create("./x")).toString()).isEqualTo("C:/first/x/x");
+    assertThat(dir.getRelative(PathFragment.create("../y")).toString()).isEqualTo("C:/first/y");
+    assertThat(dir.getRelative(PathFragment.create("../y")).toString()).isEqualTo("C:/first/y");
+    assertThat(dir.getRelative(PathFragment.create("../../../y")).toString()).isEqualTo("C:/y");
   }
 
   @Test
   public void testGetRelativeWithAbsoluteFragmentWindows() {
     Path x = filesystem.getPath("C:/first/x");
-    assertEquals("C:/x/y", x.getRelative(PathFragment.create("C:/x/y")).toString());
+    assertThat(x.getRelative(PathFragment.create("C:/x/y")).toString()).isEqualTo("C:/x/y");
   }
 
   @Test
   public void testGetRelativeWithAbsoluteStringWorksWindows() {
     Path x = filesystem.getPath("C:/first/x");
-    assertEquals("C:/x/y", x.getRelative("C:/x/y").toString());
+    assertThat(x.getRelative("C:/x/y").toString()).isEqualTo("C:/x/y");
   }
 
   @Test
   public void testParentOfRootIsRootWindows() {
-    assertSame(root, root.getRelative(".."));
-    assertSame(root.getRelative("dots"), root.getRelative("broken/../../dots"));
+    assertThat(root).isSameAs(root.getRelative(".."));
+    assertThat(root.getRelative("dots")).isSameAs(root.getRelative("broken/../../dots"));
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
index 697e2ac..e510cbf 100644
--- a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
@@ -24,7 +24,6 @@
 import static com.google.devtools.build.skyframe.GraphTester.COPY;
 import static com.google.devtools.build.skyframe.GraphTester.NODE_TYPE;
 import static com.google.devtools.build.skyframe.GraphTester.skyKey;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Predicates;
@@ -1297,7 +1296,8 @@
               }
             });
     // Prime the graph with otherTop, so we can dirty it next build.
-    assertEquals(new StringValue("otherTop"), tester.evalAndGet(/*keepGoing=*/false, otherTop));
+    assertThat(tester.evalAndGet(/*keepGoing=*/ false, otherTop))
+        .isEqualTo(new StringValue("otherTop"));
     // Mark dep1 changed, so otherTop will be dirty and request re-evaluation of dep1.
     tester.getOrCreate(dep1, /*markAsModified=*/true);
     SkyKey topKey = GraphTester.toSkyKey("top");
@@ -1631,7 +1631,8 @@
     SkyKey topKey = GraphTester.toSkyKey("top");
     tester.set(topKey, new StringValue("initial"));
     // Put topKey into graph so it will be dirtied on next run.
-    assertEquals(new StringValue("initial"), tester.evalAndGet(/*keepGoing=*/false, topKey));
+    assertThat(tester.evalAndGet(/*keepGoing=*/ false, topKey))
+        .isEqualTo(new StringValue("initial"));
     CountDownLatch slowStart = new CountDownLatch(1);
     CountDownLatch errorFinish = new CountDownLatch(1);
     SkyKey errorKey = GraphTester.toSkyKey("error");
@@ -1750,7 +1751,7 @@
     SkyKey leafKey = GraphTester.toSkyKey("leaf");
     tester.set(leafKey, new StringValue("leaf"));
     // Prime the graph by putting leaf in beforehand.
-    assertEquals(new StringValue("leaf"), tester.evalAndGet(/*keepGoing=*/false, leafKey));
+    assertThat(tester.evalAndGet(/*keepGoing=*/ false, leafKey)).isEqualTo(new StringValue("leaf"));
     SkyKey topKey = GraphTester.toSkyKey("top");
     tester.getOrCreate(topKey).addDependency(leafKey).setHasError(true);
     // Build top -- it has an error.
@@ -1799,8 +1800,8 @@
     assertThat(result.get(midKey)).isNull();
     assertThat(result.getError().getRootCauses()).containsExactly(errorKey);
     // In a keepGoing build, midKey should be re-evaluated.
-    assertEquals("recovered",
-        ((StringValue) tester.evalAndGet(/*keepGoing=*/true, parentKey)).getValue());
+    assertThat(((StringValue) tester.evalAndGet(/*keepGoing=*/ true, parentKey)).getValue())
+        .isEqualTo("recovered");
   }
 
   /**
@@ -2216,7 +2217,7 @@
     });
 
     // First build: assert we can evaluate "top".
-    assertEquals(topValue, tester.evalAndGet(/*keepGoing=*/false, topKey));
+    assertThat(tester.evalAndGet(/*keepGoing=*/ false, topKey)).isEqualTo(topValue);
 
     // Second build: replace "leaf4" by "leaf5" in leaf2's value. Assert leaf4 is not requested.
     final SkyKey leaf5 = GraphTester.toSkyKey("leaf5");
@@ -2224,7 +2225,7 @@
     tester.set(leaves.get(2), new StringValue("leaf5"));
     tester.invalidate();
     shouldNotBuildLeaf4.set(true);
-    assertEquals(topValue, tester.evalAndGet(/*keepGoing=*/false, topKey));
+    assertThat(tester.evalAndGet(/*keepGoing=*/ false, topKey)).isEqualTo(topValue);
   }
 
   @Test
@@ -2596,7 +2597,8 @@
       }
     }
     // Seed the graph.
-    assertEquals("node0", ((StringValue) tester.evalAndGet(/*keepGoing=*/false, key)).getValue());
+    assertThat(((StringValue) tester.evalAndGet(/*keepGoing=*/ false, key)).getValue())
+        .isEqualTo("node0");
     // Start the dirtying process.
     tester.set("node0", new StringValue("new"));
     tester.invalidate();
@@ -2611,7 +2613,8 @@
     // Now delete all the nodes. The node that was going to be dirtied is also deleted, which we
     // should handle.
     tester.evaluator.delete(Predicates.<SkyKey>alwaysTrue());
-    assertEquals("new", ((StringValue) tester.evalAndGet(/*keepGoing=*/false, key)).getValue());
+    assertThat(((StringValue) tester.evalAndGet(/*keepGoing=*/ false, key)).getValue())
+        .isEqualTo("new");
   }
 
   @Test
@@ -3452,8 +3455,8 @@
     tester.set(errorKey, new StringValue("biding time"));
     SkyKey absentParentKey = GraphTester.toSkyKey("absentParent");
     tester.getOrCreate(absentParentKey).addDependency(errorKey).setComputedValue(CONCATENATE);
-    assertEquals(new StringValue("biding time"),
-        tester.evalAndGet(/*keepGoing=*/false, absentParentKey));
+    assertThat(tester.evalAndGet(/*keepGoing=*/ false, absentParentKey))
+        .isEqualTo(new StringValue("biding time"));
     tester.getOrCreate(errorKey, /*markAsModified=*/true).setHasError(true);
     SkyKey newParent = GraphTester.toSkyKey("newParent");
     tester.getOrCreate(newParent).addDependency(errorKey).setComputedValue(CONCATENATE);