Migrate Java tests to Truth.
RELNOTES: None.

PiperOrigin-RevId: 157446717
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeContainerTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeContainerTest.java
index df3a9e2..b9e9c10 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/AttributeContainerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeContainerTest.java
@@ -13,11 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.events.Location.LineAndColumn;
@@ -56,17 +52,17 @@
     Object someValue2 = new Object();
     container.setAttributeValueByName(attribute1.getName(), someValue1);
     container.setAttributeValueByName(attribute2.getName(), someValue2);
-    assertEquals(someValue1, container.getAttr(attribute1.getName()));
-    assertEquals(someValue2, container.getAttr(attribute2.getName()));
-    assertNull(container.getAttr("nomatch"));
+    assertThat(container.getAttr(attribute1.getName())).isEqualTo(someValue1);
+    assertThat(container.getAttr(attribute2.getName())).isEqualTo(someValue2);
+    assertThat(container.getAttr("nomatch")).isNull();
   }
 
   @Test
   public void testExplicitSpecificationsByName() throws Exception {
     // Name-based setters are automatically considered explicit.
     container.setAttributeValueByName(attribute1.getName(), new Object());
-    assertTrue(container.isAttributeValueExplicitlySpecified(attribute1));
-    assertFalse(container.isAttributeValueExplicitlySpecified("nomatch"));
+    assertThat(container.isAttributeValueExplicitlySpecified(attribute1)).isTrue();
+    assertThat(container.isAttributeValueExplicitlySpecified("nomatch")).isFalse();
   }
 
   @Test
@@ -74,8 +70,8 @@
     Object someValue = new Object();
     container.setAttributeValue(attribute1, someValue, true);
     container.setAttributeValue(attribute2, someValue, false);
-    assertTrue(container.isAttributeValueExplicitlySpecified(attribute1));
-    assertFalse(container.isAttributeValueExplicitlySpecified(attribute2));
+    assertThat(container.isAttributeValueExplicitlySpecified(attribute1)).isTrue();
+    assertThat(container.isAttributeValueExplicitlySpecified(attribute2)).isFalse();
   }
 
   private static Location newLocation() {
@@ -88,9 +84,9 @@
     Location location2 = newLocation();
     container.setAttributeLocation(attribute1, location1);
     container.setAttributeLocation(attribute2, location2);
-    assertEquals(location1, container.getAttributeLocation(attribute1.getName()));
-    assertEquals(location2, container.getAttributeLocation(attribute2.getName()));
-    assertNull(container.getAttributeLocation("nomatch"));
+    assertThat(container.getAttributeLocation(attribute1.getName())).isEqualTo(location1);
+    assertThat(container.getAttributeLocation(attribute2.getName())).isEqualTo(location2);
+    assertThat(container.getAttributeLocation("nomatch")).isNull();
   }
 
   @Test
@@ -108,7 +104,8 @@
     for (int i = 0; i < N; ++i) {
       locations[i] = newLocation();
     }
-    assertTrue(locations[0] != locations[1]);  // test relies on checking reference inequality
+    assertThat(locations[0] != locations[1])
+        .isTrue(); // test relies on checking reference inequality
     for (int explicitCount = 0; explicitCount <= N; ++explicitCount) {
       for (int locationCount = 0; locationCount <= N; ++locationCount) {
         AttributeContainer container = new AttributeContainer(ruleClass);
@@ -132,11 +129,12 @@
         }
         for (int i = 0; i < N; ++i) {
           boolean expected = i < explicitCount;
-          assertEquals(expected, container.isAttributeValueExplicitlySpecified(attributes[i]));
+          assertThat(container.isAttributeValueExplicitlySpecified(attributes[i]))
+              .isEqualTo(expected);
         }
         for (int i = 0; i < N; ++i) {
           Location expected = i < locationCount ? locations[i] : null;
-          assertSame(expected, container.getAttributeLocation(attributes[i].getName()));
+          assertThat(container.getAttributeLocation(attributes[i].getName())).isSameAs(expected);
         }
       }
     }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
index c6d7ce2..1f507b5 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
@@ -22,9 +22,6 @@
 import static com.google.devtools.build.lib.syntax.Type.INTEGER;
 import static com.google.devtools.build.lib.syntax.Type.STRING;
 import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Predicates;
@@ -37,39 +34,35 @@
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.FileType;
 import com.google.devtools.build.lib.util.FileTypeSet;
-
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Tests of Attribute code.
- */
+/** Tests of Attribute code. */
 @RunWith(JUnit4.class)
 public class AttributeTest {
 
   private void assertDefaultValue(Object expected, Attribute attr) {
-    assertEquals(expected, attr.getDefaultValue(null));
+    assertThat(attr.getDefaultValue(null)).isEqualTo(expected);
   }
 
   private void assertType(Type<?> expectedType, Attribute attr) {
-    assertEquals(expectedType, attr.getType());
+    assertThat(attr.getType()).isEqualTo(expectedType);
   }
 
   @Test
   public void testBasics() throws Exception {
     Attribute attr = attr("foo", Type.INTEGER).mandatory().value(3).build();
-    assertEquals("foo", attr.getName());
-    assertEquals(3, attr.getDefaultValue(null));
-    assertEquals(Type.INTEGER, attr.getType());
-    assertTrue(attr.isMandatory());
-    assertTrue(attr.isDocumented());
+    assertThat(attr.getName()).isEqualTo("foo");
+    assertThat(attr.getDefaultValue(null)).isEqualTo(3);
+    assertThat(attr.getType()).isEqualTo(Type.INTEGER);
+    assertThat(attr.isMandatory()).isTrue();
+    assertThat(attr.isDocumented()).isTrue();
     attr = attr("$foo", Type.INTEGER).build();
-    assertFalse(attr.isDocumented());
+    assertThat(attr.isDocumented()).isFalse();
   }
 
   @Test
@@ -85,9 +78,9 @@
   @Test
   public void testNonEmpty() throws Exception {
     Attribute attr = attr("foo", BuildType.LABEL_LIST).nonEmpty().legacyAllowAnyFileType().build();
-    assertEquals("foo", attr.getName());
-    assertEquals(BuildType.LABEL_LIST, attr.getType());
-    assertTrue(attr.isNonEmpty());
+    assertThat(attr.getName()).isEqualTo("foo");
+    assertThat(attr.getType()).isEqualTo(BuildType.LABEL_LIST);
+    assertThat(attr.isNonEmpty()).isTrue();
   }
 
   @Test
@@ -224,11 +217,11 @@
 
     {
       Attribute childAttr1 = parentAttr.cloneBuilder().build();
-      assertEquals("x", childAttr1.getName());
-      assertEquals(txtFiles, childAttr1.getAllowedFileTypesPredicate());
-      assertEquals(Predicates.alwaysTrue(), childAttr1.getAllowedRuleClassesPredicate());
-      assertTrue(childAttr1.isMandatory());
-      assertFalse(childAttr1.isNonEmpty());
+      assertThat(childAttr1.getName()).isEqualTo("x");
+      assertThat(childAttr1.getAllowedFileTypesPredicate()).isEqualTo(txtFiles);
+      assertThat(childAttr1.getAllowedRuleClassesPredicate()).isEqualTo(Predicates.alwaysTrue());
+      assertThat(childAttr1.isMandatory()).isTrue();
+      assertThat(childAttr1.isNonEmpty()).isFalse();
       assertThat(childAttr1.getAspects(null /* rule */)).hasSize(1);
     }
 
@@ -240,17 +233,17 @@
               .allowedRuleClasses(ruleClasses)
               .aspect(TestAspects.ERROR_ASPECT)
               .build();
-      assertEquals("x", childAttr2.getName());
-      assertEquals(txtFiles, childAttr2.getAllowedFileTypesPredicate());
-      assertEquals(ruleClasses, childAttr2.getAllowedRuleClassesPredicate());
-      assertTrue(childAttr2.isMandatory());
-      assertTrue(childAttr2.isNonEmpty());
+      assertThat(childAttr2.getName()).isEqualTo("x");
+      assertThat(childAttr2.getAllowedFileTypesPredicate()).isEqualTo(txtFiles);
+      assertThat(childAttr2.getAllowedRuleClassesPredicate()).isEqualTo(ruleClasses);
+      assertThat(childAttr2.isMandatory()).isTrue();
+      assertThat(childAttr2.isNonEmpty()).isTrue();
       assertThat(childAttr2.getAspects(null /* rule */)).hasSize(2);
     }
 
-    //Check if the parent attribute is unchanged
-    assertFalse(parentAttr.isNonEmpty());
-    assertEquals(Predicates.alwaysTrue(), parentAttr.getAllowedRuleClassesPredicate());
+    // Check if the parent attribute is unchanged
+    assertThat(parentAttr.isNonEmpty()).isFalse();
+    assertThat(parentAttr.getAllowedRuleClassesPredicate()).isEqualTo(Predicates.alwaysTrue());
   }
 
   /**
@@ -258,10 +251,19 @@
    */
   @Test
   public void testConfigurability() {
-    assertTrue(attr("foo_configurable", BuildType.LABEL_LIST).legacyAllowAnyFileType().build()
-        .isConfigurable());
-    assertFalse(attr("foo_nonconfigurable", BuildType.LABEL_LIST).legacyAllowAnyFileType()
-        .nonconfigurable("test").build().isConfigurable());
+    assertThat(
+            attr("foo_configurable", BuildType.LABEL_LIST)
+                .legacyAllowAnyFileType()
+                .build()
+                .isConfigurable())
+        .isTrue();
+    assertThat(
+            attr("foo_nonconfigurable", BuildType.LABEL_LIST)
+                .legacyAllowAnyFileType()
+                .nonconfigurable("test")
+                .build()
+                .isConfigurable())
+        .isFalse();
   }
 
   @Test
@@ -269,7 +271,7 @@
     TestSplitTransition splitTransition = new TestSplitTransition();
     Attribute attr = attr("foo", LABEL).cfg(splitTransition).allowedFileTypes().build();
     assertThat(attr.getConfigurationTransition()).isEqualTo(SPLIT);
-    assertTrue(attr.hasSplitConfigurationTransition());
+    assertThat(attr.hasSplitConfigurationTransition()).isTrue();
     assertThat(attr.getSplitTransition(null)).isEqualTo(splitTransition);
   }
 
@@ -279,15 +281,15 @@
     Attribute attr =
         attr("foo", LABEL).cfg(splitTransitionProvider).allowedFileTypes().build();
     assertThat(attr.getConfigurationTransition()).isEqualTo(SPLIT);
-    assertTrue(attr.hasSplitConfigurationTransition());
-    assertTrue(attr.getSplitTransition(null) instanceof TestSplitTransition);
+    assertThat(attr.hasSplitConfigurationTransition()).isTrue();
+    assertThat(attr.getSplitTransition(null) instanceof TestSplitTransition).isTrue();
   }
 
   @Test
   public void testHostTransition() throws Exception {
     Attribute attr = attr("foo", LABEL).cfg(HOST).allowedFileTypes().build();
     assertThat(attr.getConfigurationTransition()).isEqualTo(HOST);
-    assertFalse(attr.hasSplitConfigurationTransition());
+    assertThat(attr.hasSplitConfigurationTransition()).isFalse();
   }
 
   private static class TestSplitTransition implements SplitTransition<BuildOptions> {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java b/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java
index 63c15d9..97a38b2 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java
@@ -14,9 +14,6 @@
 package com.google.devtools.build.lib.packages;
 
 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.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Joiner;
@@ -239,7 +236,7 @@
             /* destDir */ null,
             /* symlinkBehavior */ null,
             /* stripPrefix */ null);
-    assertEquals(input, BuildType.FILESET_ENTRY.convert(input, null, currentRule));
+    assertThat(BuildType.FILESET_ENTRY.convert(input, null, currentRule)).isEqualTo(input);
     assertThat(collectLabels(BuildType.FILESET_ENTRY, input)).containsExactly(entryLabel);
   }
 
@@ -263,7 +260,7 @@
             /* destDir */ null,
             /* symlinkBehavior */ null,
             /* stripPrefix */ null));
-    assertEquals(input, BuildType.FILESET_ENTRY_LIST.convert(input, null, currentRule));
+    assertThat(BuildType.FILESET_ENTRY_LIST.convert(input, null, currentRule)).isEqualTo(input);
     assertThat(collectLabels(BuildType.FILESET_ENTRY_LIST, input)).containsExactly(
         entry1Label, entry2Label);
   }
@@ -278,7 +275,7 @@
         "//conditions:b", "//b:b",
         Selector.DEFAULT_CONDITION_KEY, "//d:d");
     Selector<Label> selector = new Selector<>(input, null, currentRule, BuildType.LABEL);
-    assertEquals(BuildType.LABEL, selector.getOriginalType());
+    assertThat(selector.getOriginalType()).isEqualTo(BuildType.LABEL);
 
     Map<Label, Label> expectedMap = ImmutableMap.of(
         Label.parseAbsolute("//conditions:a"), Label.create("@//a", "a"),
@@ -300,7 +297,7 @@
       new Selector<>(input, null, currentRule, BuildType.LABEL);
       fail("Expected Selector instantiation to fail since the input isn't a selection of labels");
     } catch (ConversionException e) {
-      assertThat(e.getMessage()).contains("invalid label 'not a/../label'");
+      assertThat(e).hasMessageThat().contains("invalid label 'not a/../label'");
     }
   }
 
@@ -316,7 +313,7 @@
       new Selector<>(input, null, currentRule, BuildType.LABEL);
       fail("Expected Selector instantiation to fail since the key isn't a label");
     } catch (ConversionException e) {
-      assertThat(e.getMessage()).contains("invalid label 'not a/../label'");
+      assertThat(e).hasMessageThat().contains("invalid label 'not a/../label'");
     }
   }
 
@@ -329,9 +326,8 @@
         "//conditions:a", "//a:a",
         "//conditions:b", "//b:b",
         BuildType.Selector.DEFAULT_CONDITION_KEY, "//d:d");
-    assertEquals(
-        Label.create("@//d", "d"),
-        new Selector<>(input, null, currentRule, BuildType.LABEL).getDefault());
+    assertThat(new Selector<>(input, null, currentRule, BuildType.LABEL).getDefault())
+        .isEqualTo(Label.create("@//d", "d"));
   }
 
   @Test
@@ -343,12 +339,13 @@
     BuildType.SelectorList<List<Label>> selectorList = new BuildType.SelectorList<>(
         ImmutableList.of(selector1, selector2), null, currentRule, BuildType.LABEL_LIST);
 
-    assertEquals(BuildType.LABEL_LIST, selectorList.getOriginalType());
+    assertThat(selectorList.getOriginalType()).isEqualTo(BuildType.LABEL_LIST);
     assertThat(selectorList.getKeyLabels())
-        .containsExactlyElementsIn(
-            ImmutableSet.of(
-                Label.parseAbsolute("//conditions:a"), Label.parseAbsolute("//conditions:b"),
-                Label.parseAbsolute("//conditions:c"), Label.parseAbsolute("//conditions:d")));
+        .containsExactly(
+            Label.parseAbsolute("//conditions:a"),
+            Label.parseAbsolute("//conditions:b"),
+            Label.parseAbsolute("//conditions:c"),
+            Label.parseAbsolute("//conditions:d"));
 
     List<Selector<List<Label>>> selectors = selectorList.getSelectors();
     assertThat(selectors.get(0).getEntries().entrySet())
@@ -376,7 +373,7 @@
           BuildType.LABEL_LIST);
       fail("Expected SelectorList initialization to fail on mixed element types");
     } catch (ConversionException e) {
-      assertThat(e.getMessage()).contains("expected value of type 'list(label)'");
+      assertThat(e).hasMessageThat().contains("expected value of type 'list(label)'");
     }
   }
 
@@ -398,7 +395,7 @@
     // Conversion to direct type:
     Object converted = BuildType
         .selectableConvert(BuildType.LABEL_LIST, nativeInput, null, currentRule);
-    assertTrue(converted instanceof List<?>);
+    assertThat(converted instanceof List<?>).isTrue();
     assertThat((List<Label>) converted).containsExactlyElementsIn(expectedLabels);
 
     // Conversion to selectable type:
@@ -427,7 +424,7 @@
       BuildType.LABEL_LIST.convert(selectableInput, null, currentRule);
       fail("Expected conversion to fail on a selectable input");
     } catch (ConversionException e) {
-      assertThat(e.getMessage()).contains("expected value of type 'list(label)'");
+      assertThat(e).hasMessageThat().contains("expected value of type 'list(label)'");
     }
   }
 
@@ -436,31 +433,40 @@
    */
   @Test
   public void testReservedKeyLabels() throws Exception {
-    assertFalse(BuildType.Selector.isReservedLabel(Label.parseAbsolute("//condition:a")));
-    assertTrue(BuildType.Selector.isReservedLabel(
-        Label.parseAbsolute(BuildType.Selector.DEFAULT_CONDITION_KEY)));
+    assertThat(BuildType.Selector.isReservedLabel(Label.parseAbsolute("//condition:a"))).isFalse();
+    assertThat(
+            BuildType.Selector.isReservedLabel(
+                Label.parseAbsolute(BuildType.Selector.DEFAULT_CONDITION_KEY)))
+        .isTrue();
   }
 
   @Test
   public void testUnconditionalSelects() throws Exception {
-    assertFalse(
-        new Selector<>(
-            ImmutableMap.of("//conditions:a", "//a:a"),
-            null, currentRule, BuildType.LABEL
-        ).isUnconditional());
-    assertFalse(
-        new Selector<>(
-            ImmutableMap.of(
-                "//conditions:a", "//a:a",
-                BuildType.Selector.DEFAULT_CONDITION_KEY, "//b:b"),
-            null, currentRule, BuildType.LABEL
-        ).isUnconditional());
-    assertTrue(
-        new Selector<>(
-            ImmutableMap.of(
-                BuildType.Selector.DEFAULT_CONDITION_KEY, "//b:b"),
-            null, currentRule, BuildType.LABEL
-        ).isUnconditional());
+    assertThat(
+            new Selector<>(
+                    ImmutableMap.of("//conditions:a", "//a:a"), null, currentRule, BuildType.LABEL)
+                .isUnconditional())
+        .isFalse();
+    assertThat(
+            new Selector<>(
+                    ImmutableMap.of(
+                        "//conditions:a",
+                        "//a:a",
+                        BuildType.Selector.DEFAULT_CONDITION_KEY,
+                        "//b:b"),
+                    null,
+                    currentRule,
+                    BuildType.LABEL)
+                .isUnconditional())
+        .isFalse();
+    assertThat(
+            new Selector<>(
+                    ImmutableMap.of(BuildType.Selector.DEFAULT_CONDITION_KEY, "//b:b"),
+                    null,
+                    currentRule,
+                    BuildType.LABEL)
+                .isUnconditional())
+        .isTrue();
   }
 
   private static FilesetEntry makeFilesetEntry() {
@@ -519,7 +525,8 @@
     // with a List<Label> even though this isn't a valid datatype in the
     // interpreter.
     // Fileset isn't part of bazel, even though FilesetEntry is.
-    assertEquals(createExpectedFilesetEntryString('"'), Printer.repr(createTestFilesetEntry()));
+    assertThat(Printer.repr(createTestFilesetEntry()))
+        .isEqualTo(createExpectedFilesetEntryString('"'));
   }
 
   @Test
@@ -533,9 +540,8 @@
     FilesetEntry entryDereference =
       createTestFilesetEntry(FilesetEntry.SymlinkBehavior.DEREFERENCE);
 
-    assertEquals(
-        createExpectedFilesetEntryString(FilesetEntry.SymlinkBehavior.DEREFERENCE, '"'),
-        Printer.repr(entryDereference));
+    assertThat(Printer.repr(entryDereference))
+        .isEqualTo(createExpectedFilesetEntryString(FilesetEntry.SymlinkBehavior.DEREFERENCE, '"'));
   }
 
   private FilesetEntry createStripPrefixFilesetEntry(String stripPrefix)  throws Exception {
@@ -585,8 +591,8 @@
 
   @Test
   public void testFilesetTypeDefinition() throws Exception {
-    assertEquals("FilesetEntry",  EvalUtils.getDataTypeName(makeFilesetEntry()));
-    assertFalse(EvalUtils.isImmutable(makeFilesetEntry()));
+    assertThat(EvalUtils.getDataTypeName(makeFilesetEntry())).isEqualTo("FilesetEntry");
+    assertThat(EvalUtils.isImmutable(makeFilesetEntry())).isFalse();
   }
 
   private static ImmutableList<Label> collectLabels(Type<?> type, Object value)
diff --git a/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java b/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
index c8e0964..f9dde14 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
@@ -14,16 +14,12 @@
 package com.google.devtools.build.lib.packages;
 
 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.assertTrue;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
 import com.google.devtools.build.lib.vfs.Path;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -62,25 +58,25 @@
 
   @Test
   public void testGroupMembership() throws Exception {
-    assertEquals(
-        ImmutableSet.of(
-            Label.parseAbsolute("//pkg:foo"),
-            Label.parseAbsolute("//pkg:bar"),
-            Label.parseAbsolute("//pkg:baz")),
-        group.getEnvironments());
+    assertThat(group.getEnvironments())
+        .isEqualTo(
+            ImmutableSet.of(
+                Label.parseAbsolute("//pkg:foo"),
+                Label.parseAbsolute("//pkg:bar"),
+                Label.parseAbsolute("//pkg:baz")));
   }
 
   @Test
   public void testDefaultsMembership() throws Exception {
-    assertEquals(ImmutableSet.of(Label.parseAbsolute("//pkg:foo")), group.getDefaults());
+    assertThat(group.getDefaults()).isEqualTo(ImmutableSet.of(Label.parseAbsolute("//pkg:foo")));
   }
 
   @Test
   public void testIsDefault() throws Exception {
-    assertTrue(group.isDefault(Label.parseAbsolute("//pkg:foo")));
-    assertFalse(group.isDefault(Label.parseAbsolute("//pkg:bar")));
-    assertFalse(group.isDefault(Label.parseAbsolute("//pkg:baz")));
-    assertFalse(group.isDefault(Label.parseAbsolute("//pkg:not_in_group")));
+    assertThat(group.isDefault(Label.parseAbsolute("//pkg:foo"))).isTrue();
+    assertThat(group.isDefault(Label.parseAbsolute("//pkg:bar"))).isFalse();
+    assertThat(group.isDefault(Label.parseAbsolute("//pkg:baz"))).isFalse();
+    assertThat(group.isDefault(Label.parseAbsolute("//pkg:not_in_group"))).isFalse();
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
index 31ca540..a968d4a 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
@@ -14,8 +14,6 @@
 package com.google.devtools.build.lib.packages;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Joiner;
@@ -23,19 +21,14 @@
 import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
 import com.google.devtools.build.lib.testutil.Scratch;
 import com.google.devtools.build.lib.vfs.Path;
-
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * A test for the {@code exports_files} function defined in
- * {@link PackageFactory}.
- */
+/** A test for the {@code exports_files} function defined in {@link PackageFactory}. */
 @RunWith(JUnit4.class)
 public class ExportsFilesTest {
 
@@ -53,7 +46,7 @@
   public void testExportsFilesRegistersFilesWithPackage() throws Exception {
     List<String> names = getFileNamesOf(pkg());
     String expected = "//pkg:BUILD //pkg:bar.txt //pkg:foo.txt";
-    assertEquals(expected, Joiner.on(' ').join(names));
+    assertThat(Joiner.on(' ').join(names)).isEqualTo(expected);
   }
 
   /**
@@ -83,8 +76,8 @@
   @Test
   public void testRegisteredFilesAreRetrievable() throws Exception {
     Package pkg = pkg();
-    assertEquals("foo.txt", pkg.getTarget("foo.txt").getName());
-    assertEquals("bar.txt", pkg.getTarget("bar.txt").getName());
+    assertThat(pkg.getTarget("foo.txt").getName()).isEqualTo("foo.txt");
+    assertThat(pkg.getTarget("bar.txt").getName()).isEqualTo("bar.txt");
   }
 
   @Test
@@ -98,7 +91,7 @@
     Package pkg = packages.createPackage("pkg2", buildFile);
     events.assertContainsError("rule 'foo' in package 'pkg2' conflicts with "
                                + "existing source file");
-    assertTrue(pkg.getTarget("foo") instanceof InputFile);
+    assertThat(pkg.getTarget("foo") instanceof InputFile).isTrue();
   }
 
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
index e229cee..0dd6dfb 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
@@ -13,12 +13,11 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -52,7 +51,8 @@
 
     invalidatePackages(/*alsoConfigs=*/false);
     // Make sure the second rule "wins."
-    assertEquals("new_local_repository rule", getTarget("//external:my_rule").getTargetKind());
+    assertThat(getTarget("//external:my_rule").getTargetKind())
+        .isEqualTo("new_local_repository rule");
   }
 
   @Test
@@ -70,6 +70,7 @@
 
     invalidatePackages(/*alsoConfigs=*/false);
     // Make sure the second rule "wins."
-    assertEquals("new_local_repository rule", getTarget("//external:my_rule").getTargetKind());
+    assertThat(getTarget("//external:my_rule").getTargetKind())
+        .isEqualTo("new_local_repository rule");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java
index 3215624..97f12b8 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.packages;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -22,11 +21,6 @@
 import com.google.devtools.build.lib.testutil.Suite;
 import com.google.devtools.build.lib.testutil.TestSpec;
 import com.google.devtools.build.lib.util.Preconditions;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,6 +28,9 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /**
  * Tests for {@link ImplicitOutputsFunction}.
@@ -44,10 +41,10 @@
   private void assertPlaceholderCollection(
       String template, String expectedTemplate, String... expectedPlaceholders) throws Exception {
     List<String> actualPlaceholders = new ArrayList<>();
-    assertEquals(
-        expectedTemplate,
-        ImplicitOutputsFunction.createPlaceholderSubstitutionFormatString(
-            template, actualPlaceholders));
+    assertThat(
+            ImplicitOutputsFunction.createPlaceholderSubstitutionFormatString(
+                template, actualPlaceholders))
+        .isEqualTo(expectedTemplate);
     assertThat(actualPlaceholders)
         .containsExactlyElementsIn(Arrays.asList(expectedPlaceholders))
         .inOrder();
@@ -146,7 +143,8 @@
     assertThat(foundAttributes)
         .containsExactlyElementsIn(Arrays.asList(expectedFoundPlaceholders))
         .inOrder();
-    assertThat(substitutions).containsExactlyElementsIn(Arrays.asList(expectedSubstitutions));
+    assertThat(substitutions)
+        .containsExactlyElementsIn(Arrays.asList(expectedSubstitutions));
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
index 021c20a..a7d7839 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
@@ -13,16 +13,14 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
 
+import com.google.common.testing.EqualsTester;
 import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
 import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
 import com.google.devtools.build.lib.testutil.Scratch;
 import com.google.devtools.build.lib.vfs.Path;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -59,20 +57,20 @@
   }
 
   private static void checkPathMatches(InputFile input, Path expectedPath) {
-    assertEquals(expectedPath, input.getPath());
+    assertThat(input.getPath()).isEqualTo(expectedPath);
   }
 
   private static void checkName(InputFile input, String expectedName) {
-    assertEquals(expectedName, input.getName());
+    assertThat(input.getName()).isEqualTo(expectedName);
   }
 
   private static void checkLabel(InputFile input, String expectedLabelString) {
-    assertEquals(expectedLabelString, input.getLabel().toString());
+    assertThat(input.getLabel().toString()).isEqualTo(expectedLabelString);
   }
 
   @Test
   public void testGetAssociatedRule() throws Exception {
-    assertNull(null, pkg.getTarget("x").getAssociatedRule());
+    assertWithMessage(null).that(pkg.getTarget("x").getAssociatedRule()).isNull();
   }
 
   @Test
@@ -81,7 +79,7 @@
     checkPathMatches(inputFileX, pathX);
     checkName(inputFileX, "x");
     checkLabel(inputFileX, "//pkg:x");
-    assertEquals("source file", inputFileX.getTargetKind());
+    assertThat(inputFileX.getTargetKind()).isEqualTo("source file");
   }
 
   @Test
@@ -95,11 +93,12 @@
   @Test
   public void testEquivalenceRelation() throws NoSuchTargetException {
     InputFile inputFileX = (InputFile) pkg.getTarget("x");
-    assertSame(pkg.getTarget("x"), inputFileX);
+    assertThat(inputFileX).isSameAs(pkg.getTarget("x"));
     InputFile inputFileY = (InputFile) pkg.getTarget("subdir/y");
-    assertSame(pkg.getTarget("subdir/y"), inputFileY);
-    assertEquals(inputFileX, inputFileX);
-    assertFalse(inputFileX.equals(inputFileY));
-    assertFalse(inputFileY.equals(inputFileX));
+    assertThat(inputFileY).isSameAs(pkg.getTarget("subdir/y"));
+    new EqualsTester()
+        .addEqualityGroup(inputFileX)
+        .addEqualityGroup(inputFileY)
+        .testEquals();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/LicenseTest.java b/src/test/java/com/google/devtools/build/lib/packages/LicenseTest.java
index 0032dc8..845f0b5 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/LicenseTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/LicenseTest.java
@@ -13,28 +13,26 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.packages.License.LicenseType;
-
+import java.util.Arrays;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import java.util.Arrays;
-
 @RunWith(JUnit4.class)
 public class LicenseTest {
 
   @Test
   public void testLeastRestrictive() {
-    assertEquals(
-        LicenseType.RESTRICTED, License.leastRestrictive(Arrays.asList(LicenseType.RESTRICTED)));
-    assertEquals(
-        LicenseType.RESTRICTED,
-        License.leastRestrictive(
-            Arrays.asList(LicenseType.RESTRICTED, LicenseType.BY_EXCEPTION_ONLY)));
-    assertEquals(
-        LicenseType.BY_EXCEPTION_ONLY, License.leastRestrictive(Arrays.<LicenseType>asList()));
+    assertThat(License.leastRestrictive(Arrays.asList(LicenseType.RESTRICTED)))
+        .isEqualTo(LicenseType.RESTRICTED);
+    assertThat(
+            License.leastRestrictive(
+                Arrays.asList(LicenseType.RESTRICTED, LicenseType.BY_EXCEPTION_ONLY)))
+        .isEqualTo(LicenseType.RESTRICTED);
+    assertThat(License.leastRestrictive(Arrays.<LicenseType>asList()))
+        .isEqualTo(LicenseType.BY_EXCEPTION_ONLY);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
index 34a3a9b..57b7c59 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
@@ -13,14 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
+import static com.google.common.truth.Truth.assertThat;
 
+import com.google.common.testing.EqualsTester;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
 import com.google.devtools.build.lib.vfs.Path;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -49,20 +47,20 @@
   }
 
   private void checkTargetRetainsGeneratingRule(OutputFile output) throws Exception {
-    assertSame(rule, output.getGeneratingRule());
+    assertThat(output.getGeneratingRule()).isSameAs(rule);
   }
 
   private void checkName(OutputFile output, String expectedName) throws Exception {
-    assertEquals(expectedName, output.getName());
+    assertThat(output.getName()).isEqualTo(expectedName);
   }
 
   private void checkLabel(OutputFile output, String expectedLabelString) throws Exception {
-    assertEquals(expectedLabelString, output.getLabel().toString());
+    assertThat(output.getLabel().toString()).isEqualTo(expectedLabelString);
   }
 
   @Test
   public void testGetAssociatedRule() throws Exception {
-    assertSame(rule, pkg.getTarget("x").getAssociatedRule());
+    assertThat(pkg.getTarget("x").getAssociatedRule()).isSameAs(rule);
   }
 
   @Test
@@ -71,7 +69,7 @@
     checkTargetRetainsGeneratingRule(outputFileX);
     checkName(outputFileX, "x");
     checkLabel(outputFileX, "//pkg:x");
-    assertEquals("generated file", outputFileX.getTargetKind());
+    assertThat(outputFileX.getTargetKind()).isEqualTo("generated file");
   }
 
   @Test
@@ -88,16 +86,12 @@
     OutputFile outputFileX2 = (OutputFile) pkg.getTarget("x");
     OutputFile outputFileY1 = (OutputFile) pkg.getTarget("subdir/y");
     OutputFile outputFileY2 = (OutputFile) pkg.getTarget("subdir/y");
-    assertSame(outputFileX1, outputFileX2);
-    assertSame(outputFileY1, outputFileY2);
-    assertEquals(outputFileX1, outputFileX2);
-    assertEquals(outputFileX2, outputFileX1);
-    assertEquals(outputFileY1, outputFileY2);
-    assertEquals(outputFileY2, outputFileY1);
-    assertFalse(outputFileX1.equals(outputFileY1));
-    assertFalse(outputFileY1.equals(outputFileX1));
-    assertEquals(outputFileX1.hashCode(), outputFileX2.hashCode());
-    assertEquals(outputFileY1.hashCode(), outputFileY2.hashCode());
+    assertThat(outputFileX2).isSameAs(outputFileX1);
+    assertThat(outputFileY2).isSameAs(outputFileY1);
+    new EqualsTester()
+        .addEqualityGroup(outputFileX1, outputFileX2)
+        .addEqualityGroup(outputFileY1, outputFileY2)
+        .testEquals();
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
index 99c811d..a7457c7 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
@@ -15,12 +15,6 @@
 package com.google.devtools.build.lib.packages;
 
 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.assertSame;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.ImmutableList;
@@ -61,7 +55,7 @@
   public void testCreatePackage() throws Exception {
     Path buildFile = scratch.file("/pkgname/BUILD", "# empty build file ");
     Package pkg = packages.createPackage("pkgname", buildFile);
-    assertEquals("pkgname", pkg.getName());
+    assertThat(pkg.getName()).isEqualTo("pkgname");
     assertThat(Sets.newHashSet(pkg.getTargets(Rule.class))).isEmpty();
   }
 
@@ -83,10 +77,11 @@
 
     // wait for all to finish
     e.shutdown();
-    assertTrue(e.awaitTermination(TestUtils.WAIT_TIMEOUT_MILLISECONDS, TimeUnit.MILLISECONDS));
+    assertThat(e.awaitTermination(TestUtils.WAIT_TIMEOUT_MILLISECONDS, TimeUnit.MILLISECONDS))
+        .isTrue();
     log.removeHandler(parser);
     log.setLevel(originalLevel);
-    assertTrue(parser.hasParsed());
+    assertThat(parser.hasParsed()).isTrue();
   }
 
   @Test
@@ -97,7 +92,7 @@
     Package pkg = packages.createPackage("badrulename", buildFile);
 
     events.assertContainsError("cc_library 'name' attribute must be a string");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
@@ -108,7 +103,7 @@
     Package pkg = packages.createPackage("badrulename", buildFile);
 
     events.assertContainsError("cc_library rule has no 'name' attribute");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
@@ -120,7 +115,8 @@
           emptyBuildFile("not even a legal/.../label"));
       fail();
     } catch (NoSuchPackageException e) {
-      assertThat(e.getMessage())
+      assertThat(e)
+          .hasMessageThat()
           .contains(
               "no such package 'not even a legal/.../label': "
                   + "illegal package name: 'not even a legal/.../label' ");
@@ -138,16 +134,16 @@
     events.assertContainsError("target names may not contain ':'");
     assertThat(pkg.getTargets(FileTarget.class).toString())
         .doesNotContain("houseads/house_ads:ca-aol_parenting_html");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
   public void testPackageNameWithPROTECTEDIsOk() throws Exception {
     events.setFailFast(false);
     // One "PROTECTED":
-    assertTrue(isValidPackageName("foo/PROTECTED/bar"));
+    assertThat(isValidPackageName("foo/PROTECTED/bar")).isTrue();
     // Multiple "PROTECTED"s:
-    assertTrue(isValidPackageName("foo/PROTECTED/bar/PROTECTED/wiz"));
+    assertThat(isValidPackageName("foo/PROTECTED/bar/PROTECTED/wiz")).isTrue();
   }
 
   @Test
@@ -164,7 +160,7 @@
     events.assertContainsError(
         "cc_library rule 'spell_proto' in package "
             + "'duplicaterulename' conflicts with existing proto_library rule");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
@@ -179,11 +175,11 @@
     Package pkg = packages.createPackage("has_dupe", buildFile);
     events.assertContainsError(
         "Label '//has_dupe:dep' is duplicated in the 'deps' " + "attribute of rule 'has_dupe'");
-    assertTrue(pkg.containsErrors());
-    assertNotNull(pkg.getRule("has_dupe"));
-    assertNotNull(pkg.getRule("dep"));
-    assertTrue(pkg.getRule("has_dupe").containsErrors());
-    assertTrue(pkg.getRule("dep").containsErrors()); // because all rules in an
+    assertThat(pkg.containsErrors()).isTrue();
+    assertThat(pkg.getRule("has_dupe")).isNotNull();
+    assertThat(pkg.getRule("dep")).isNotNull();
+    assertThat(pkg.getRule("has_dupe").containsErrors()).isTrue();
+    assertThat(pkg.getRule("dep").containsErrors()).isTrue(); // because all rules in an
     // errant package are
     // themselves errant.
   }
@@ -245,10 +241,10 @@
 
     Package pkg = packages.createPackage("pina", buildFile);
     events.assertNoWarningsOrErrors();
-    assertFalse(pkg.containsErrors());
-    assertNotNull(pkg.getRule("pina-colada"));
-    assertFalse(pkg.getRule("pina-colada").containsErrors());
-    assertSame(1, Sets.newHashSet(pkg.getTargets(Rule.class)).size());
+    assertThat(pkg.containsErrors()).isFalse();
+    assertThat(pkg.getRule("pina-colada")).isNotNull();
+    assertThat(pkg.getRule("pina-colada").containsErrors()).isFalse();
+    assertThat(Sets.newHashSet(pkg.getTargets(Rule.class)).size()).isSameAs(1);
   }
 
   @Test
@@ -257,10 +253,10 @@
 
     Package pkg = packages.createPackage("pina", buildFile);
     events.assertNoWarningsOrErrors();
-    assertFalse(pkg.containsErrors());
-    assertNotNull(pkg.getRule("pina-colada"));
-    assertFalse(pkg.getRule("pina-colada").containsErrors());
-    assertSame(1, Sets.newHashSet(pkg.getTargets(Rule.class)).size());
+    assertThat(pkg.containsErrors()).isFalse();
+    assertThat(pkg.getRule("pina-colada")).isNotNull();
+    assertThat(pkg.getRule("pina-colada").containsErrors()).isFalse();
+    assertThat(Sets.newHashSet(pkg.getTargets(Rule.class)).size()).isSameAs(1);
   }
 
   @Test
@@ -313,7 +309,7 @@
     events.assertContainsError(
         "cc_library rule 'spell_proto' in package "
             + "'multipleduplicaterulename' conflicts with existing proto_library rule");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
@@ -322,10 +318,10 @@
     Package pkg = packages.createPackage("foo", buildFile);
 
     Target target = pkg.getTarget("BUILD");
-    assertEquals("BUILD", target.getName());
+    assertThat(target.getName()).isEqualTo("BUILD");
 
     // Test that it's memoized:
-    assertSame(target, pkg.getTarget("BUILD"));
+    assertThat(pkg.getTarget("BUILD")).isSameAs(target);
   }
 
   @Test
@@ -338,16 +334,16 @@
             "cc_library(name='X', srcs=['X'])",
             "cc_library(name='Y')");
     Package pkg = packages.createPackage("foo", buildFile);
-    assertFalse(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isFalse();
 
     // X is a rule with a circular self-dependency.
-    assertSame(Rule.class, pkg.getTarget("X").getClass());
+    assertThat(pkg.getTarget("X").getClass()).isSameAs(Rule.class);
 
     // Y is a rule
-    assertSame(Rule.class, pkg.getTarget("Y").getClass());
+    assertThat(pkg.getTarget("Y").getClass()).isSameAs(Rule.class);
 
     // Z is a file
-    assertSame(InputFile.class, pkg.getTarget("Z").getClass());
+    assertThat(pkg.getTarget("Z").getClass()).isSameAs(InputFile.class);
 
     // A is nothing
     try {
@@ -365,7 +361,7 @@
     for (InputFile inputFile : pkg.getTargets(InputFile.class)) {
       inputFiles.add(inputFile.getName());
     }
-    assertEquals(ImmutableList.of("BUILD", "Z"), Lists.newArrayList(inputFiles));
+    assertThat(Lists.newArrayList(inputFiles)).containsExactly("BUILD", "Z").inOrder();
   }
 
   @Test
@@ -378,7 +374,7 @@
         "third-party rule '//third_party/foo:bar' lacks a license "
             + "declaration with one of the following types: "
             + "notice, reciprocal, permissive, restricted, unencumbered, by_exception_only");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
@@ -390,7 +386,7 @@
         "third-party file 'bar' lacks a license "
             + "declaration with one of the following types: "
             + "notice, reciprocal, permissive, restricted, unencumbered, by_exception_only");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   @Test
@@ -409,12 +405,12 @@
     events.assertContainsError(
         "cc_library rule 'dup_proto' in package 'dup' "
             + "conflicts with existing proto_library rule");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
 
     Rule dupProto = pkg.getRule("dup_proto");
     // Check that the first rule of the given name "wins", and that each of the
     // "winning" rule's outputs is a member of the package.
-    assertEquals("proto_library", dupProto.getRuleClass());
+    assertThat(dupProto.getRuleClass()).isEqualTo("proto_library");
     for (OutputFile out : dupProto.getOutputFiles()) {
       assertThat(pkg.getTargets(FileTarget.class)).contains(out);
     }
@@ -443,12 +439,13 @@
     events.assertContainsError(
         "generated file 'out2' in rule 'rule2' "
             + "conflicts with existing generated file from rule 'rule1'");
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
 
-    assertNull(pkg.getRule("rule2"));
+    assertThat(pkg.getRule("rule2")).isNull();
 
     // Ensure that rule2's "out2" didn't overwrite rule1's:
-    assertSame(pkg.getRule("rule1"), ((OutputFile) pkg.getTarget("out2")).getGeneratingRule());
+    assertThat(((OutputFile) pkg.getTarget("out2")).getGeneratingRule())
+        .isSameAs(pkg.getRule("rule1"));
 
     // None of rule2, its inputs, or its outputs should belong to pkg:
     List<Target> found = new ArrayList<>();
@@ -483,17 +480,18 @@
     Package pkg = packages.createPackage("error", path);
     events.assertContainsError("name 'PopulateList' is not defined");
 
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
 
     // rule1 would be fine but is still marked as in error:
-    assertTrue(pkg.getRule("rule1").containsErrors());
+    assertThat(pkg.getRule("rule1").containsErrors()).isTrue();
 
     // rule2 is considered "in error" because it's after an error.
     // Indeed, it has the wrong "outs" set because the call to PopulateList
     // failed.
     Rule rule2 = pkg.getRule("rule2");
-    assertTrue(rule2.containsErrors());
-    assertEquals(Sets.newHashSet(pkg.getTarget("bad")), Sets.newHashSet(rule2.getOutputFiles()));
+    assertThat(rule2.containsErrors()).isTrue();
+    assertThat(Sets.newHashSet(rule2.getOutputFiles()))
+        .isEqualTo(Sets.newHashSet(pkg.getTarget("bad")));
   }
 
   @Test
@@ -505,7 +503,7 @@
 
     Package pkg = packages.createPackage("x", path);
 
-    assertNotNull(pkg.getTarget("x.cc")); // existing and mentioned.
+    assertThat(pkg.getTarget("x.cc")).isNotNull(); // existing and mentioned.
 
     try {
       pkg.getTarget("y.cc"); // existing but not mentioned.
@@ -879,7 +877,7 @@
   @Test
   public void testPackageSpecMinimal() throws Exception {
     Package pkg = expectEvalSuccess("package(default_visibility=[])");
-    assertNotNull(pkg.getDefaultVisibility());
+    assertThat(pkg.getDefaultVisibility()).isNotNull();
   }
 
   @Test
@@ -908,21 +906,21 @@
   @Test
   public void testDefaultTestonly() throws Exception {
     Package pkg = expectEvalSuccess("package(default_testonly = 1)");
-    assertTrue(pkg.getDefaultTestOnly());
+    assertThat(pkg.getDefaultTestOnly()).isTrue();
   }
 
   @Test
   public void testDefaultDeprecation() throws Exception {
     String testMessage = "OMG PONIES!";
     Package pkg = expectEvalSuccess("package(default_deprecation = \"" + testMessage + "\")");
-    assertEquals(testMessage, pkg.getDefaultDeprecation());
+    assertThat(pkg.getDefaultDeprecation()).isEqualTo(testMessage);
   }
 
   @Test
   public void testExportsBuildFile() throws Exception {
     Package pkg =
         expectEvalSuccess("exports_files(['BUILD'], visibility=['//visibility:private'])");
-    assertEquals(pkg.getBuildFile(), pkg.getTarget("BUILD"));
+    assertThat(pkg.getTarget("BUILD")).isEqualTo(pkg.getBuildFile());
   }
 
   @Test
@@ -938,7 +936,7 @@
     Rule fooRule = (Rule) pkg.getTarget("bar");
     String deprAttr =
         attributes(fooRule).get("deprecation", com.google.devtools.build.lib.syntax.Type.STRING);
-    assertEquals(msg, deprAttr);
+    assertThat(deprAttr).isEqualTo(msg);
   }
 
   @Test
@@ -952,12 +950,14 @@
     Package pkg = packages.eval("foo", file);
 
     Rule fooRule = (Rule) pkg.getTarget("foo");
-    assertTrue(
-        attributes(fooRule).get("testonly", com.google.devtools.build.lib.syntax.Type.BOOLEAN));
+    assertThat(
+            attributes(fooRule).get("testonly", com.google.devtools.build.lib.syntax.Type.BOOLEAN))
+        .isTrue();
 
     Rule barRule = (Rule) pkg.getTarget("bar");
-    assertFalse(
-        attributes(barRule).get("testonly", com.google.devtools.build.lib.syntax.Type.BOOLEAN));
+    assertThat(
+            attributes(barRule).get("testonly", com.google.devtools.build.lib.syntax.Type.BOOLEAN))
+        .isFalse();
   }
 
   @Test
@@ -974,7 +974,7 @@
     Rule fooRule = (Rule) pkg.getTarget("bar");
     String deprAttr =
         attributes(fooRule).get("deprecation", com.google.devtools.build.lib.syntax.Type.STRING);
-    assertEquals(msg, deprAttr);
+    assertThat(deprAttr).isEqualTo(msg);
   }
 
   @Test
@@ -1001,12 +1001,12 @@
     scratch.file("/e/data.txt");
     throwOnReaddir = parentDir;
     Package pkg = packages.createPackage("e", buildFile);
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
     events.setFailFast(true);
     throwOnReaddir = null;
     pkg = packages.createPackage("e", buildFile);
-    assertFalse(pkg.containsErrors());
-    assertNotNull(pkg.getRule("e"));
+    assertThat(pkg.containsErrors()).isFalse();
+    assertThat(pkg.getRule("e")).isNotNull();
     GlobList globList = (GlobList) pkg.getRule("e").getAttributeContainer().getAttr("data");
     assertThat(globList).containsExactly(Label.parseAbsolute("//e:data.txt"));
   }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
index f05709d..e778d89 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
@@ -13,7 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertFalse;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -83,8 +83,8 @@
     producingThread.start();
     producingThread.join(3000);
     consumingThread.join(3000);
-    assertFalse(producingThread.isAlive());
-    assertFalse(consumingThread.isAlive());
+    assertThat(producingThread.isAlive()).isFalse();
+    assertThat(consumingThread.isAlive()).isFalse();
   }
 
   private Package getPackage(String packageName) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
index 55e8da9..7bb8cae 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
@@ -14,10 +14,7 @@
 package com.google.devtools.build.lib.packages;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 
-import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
 import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
 import com.google.devtools.build.lib.testutil.Scratch;
@@ -64,8 +61,8 @@
     scratch.file("fruits/vegetables/BUILD");
 
     PackageGroup grp = getPackageGroup("fruits", "apple");
-    assertTrue(grp.contains(getPackage("vegetables")));
-    assertFalse(grp.contains(getPackage("fruits/vegetables")));
+    assertThat(grp.contains(getPackage("vegetables"))).isTrue();
+    assertThat(grp.contains(getPackage("fruits/vegetables"))).isFalse();
   }
 
   @Test
@@ -150,7 +147,7 @@
     scratch.file("fruits/BUILD", "package_group(name = 'mango', packages = ['//...'])");
     PackageGroup packageGroup = getPackageGroup("fruits", "mango");
     assertThat(packageGroup.getPackageSpecifications())
-        .containsExactlyElementsIn(ImmutableList.of(PackageSpecification.everything()));
+        .containsExactly(PackageSpecification.everything());
   }
 
   private Package getPackage(String packageName) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java b/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java
index fee2a7c..7ddc2bc 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java
@@ -13,11 +13,10 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
 import com.google.devtools.build.lib.vfs.PathFragment;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -117,6 +116,6 @@
 
   private void assertResolvesTo(String relative, String expectedAbsolute) throws Exception {
     String result = resolver.resolve(relative);
-    assertEquals(expectedAbsolute, result);
+    assertThat(result).isEqualTo(expectedAbsolute);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java
index e906b95..b93fe6c 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java
@@ -19,14 +19,10 @@
 import static com.google.devtools.build.lib.syntax.Type.INTEGER;
 import static com.google.devtools.build.lib.syntax.Type.STRING;
 import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
 import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -55,18 +51,18 @@
             .add(attr("X", com.google.devtools.build.lib.syntax.Type.INTEGER).mandatory())
             .build();
 
-    assertEquals("ruleA", ruleClassA.getName());
-    assertEquals(3, ruleClassA.getAttributeCount());
-    assertTrue(ruleClassA.hasBinaryOutput());
+    assertThat(ruleClassA.getName()).isEqualTo("ruleA");
+    assertThat(ruleClassA.getAttributeCount()).isEqualTo(3);
+    assertThat(ruleClassA.hasBinaryOutput()).isTrue();
 
-    assertEquals(0, (int) ruleClassA.getAttributeIndex("srcs"));
-    assertEquals(ruleClassA.getAttribute(0), ruleClassA.getAttributeByName("srcs"));
+    assertThat((int) ruleClassA.getAttributeIndex("srcs")).isEqualTo(0);
+    assertThat(ruleClassA.getAttributeByName("srcs")).isEqualTo(ruleClassA.getAttribute(0));
 
-    assertEquals(1, (int) ruleClassA.getAttributeIndex("tags"));
-    assertEquals(ruleClassA.getAttribute(1), ruleClassA.getAttributeByName("tags"));
+    assertThat((int) ruleClassA.getAttributeIndex("tags")).isEqualTo(1);
+    assertThat(ruleClassA.getAttributeByName("tags")).isEqualTo(ruleClassA.getAttribute(1));
 
-    assertEquals(2, (int) ruleClassA.getAttributeIndex("X"));
-    assertEquals(ruleClassA.getAttribute(2), ruleClassA.getAttributeByName("X"));
+    assertThat((int) ruleClassA.getAttributeIndex("X")).isEqualTo(2);
+    assertThat(ruleClassA.getAttributeByName("X")).isEqualTo(ruleClassA.getAttribute(2));
   }
 
   @Test
@@ -81,7 +77,7 @@
             .add(attr("shard_count", INTEGER).value(-1))
             .add(attr("local", BOOLEAN))
             .build();
-    assertTrue(ruleClassA.hasBinaryOutput());
+    assertThat(ruleClassA.hasBinaryOutput()).isTrue();
   }
 
   @Test
@@ -92,7 +88,7 @@
             .setOutputToGenfiles()
             .add(attr("tags", STRING_LIST))
             .build();
-    assertFalse(ruleClassA.hasBinaryOutput());
+    assertThat(ruleClassA.hasBinaryOutput()).isFalse();
   }
 
   @Test
@@ -181,9 +177,9 @@
         new RuleClass.Builder("c", RuleClassType.NORMAL, false, a)
             .factory(DUMMY_CONFIGURED_TARGET_FACTORY);
     RuleClass c = builder.removeAttribute("a").add(attr("a", INTEGER)).removeAttribute("b").build();
-    assertFalse(c.hasAttr("a", STRING));
-    assertTrue(c.hasAttr("a", INTEGER));
-    assertFalse(c.hasAttr("b", STRING));
+    assertThat(c.hasAttr("a", STRING)).isFalse();
+    assertThat(c.hasAttr("a", INTEGER)).isTrue();
+    assertThat(c.hasAttr("b", STRING)).isFalse();
 
     try {
       builder.removeAttribute("c");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
index 63ccc24..6b18d72 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
@@ -26,9 +26,6 @@
 import static com.google.devtools.build.lib.syntax.Type.STRING;
 import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Function;
@@ -162,46 +159,42 @@
   public void testRuleClassBasics() throws Exception {
     RuleClass ruleClassA = createRuleClassA();
 
-    assertEquals("ruleA", ruleClassA.getName());
-    assertEquals(7, ruleClassA.getAttributeCount());
+    assertThat(ruleClassA.getName()).isEqualTo("ruleA");
+    assertThat(ruleClassA.getAttributeCount()).isEqualTo(7);
 
-    assertEquals(0, (int) ruleClassA.getAttributeIndex("my-string-attr"));
-    assertEquals(1, (int) ruleClassA.getAttributeIndex("my-label-attr"));
-    assertEquals(2, (int) ruleClassA.getAttributeIndex("my-labellist-attr"));
-    assertEquals(3, (int) ruleClassA.getAttributeIndex("my-integer-attr"));
-    assertEquals(4, (int) ruleClassA.getAttributeIndex("my-string-attr2"));
-    assertEquals(5, (int) ruleClassA.getAttributeIndex("my-stringlist-attr"));
-    assertEquals(6, (int) ruleClassA.getAttributeIndex("my-sorted-stringlist-attr"));
+    assertThat((int) ruleClassA.getAttributeIndex("my-string-attr")).isEqualTo(0);
+    assertThat((int) ruleClassA.getAttributeIndex("my-label-attr")).isEqualTo(1);
+    assertThat((int) ruleClassA.getAttributeIndex("my-labellist-attr")).isEqualTo(2);
+    assertThat((int) ruleClassA.getAttributeIndex("my-integer-attr")).isEqualTo(3);
+    assertThat((int) ruleClassA.getAttributeIndex("my-string-attr2")).isEqualTo(4);
+    assertThat((int) ruleClassA.getAttributeIndex("my-stringlist-attr")).isEqualTo(5);
+    assertThat((int) ruleClassA.getAttributeIndex("my-sorted-stringlist-attr")).isEqualTo(6);
 
-    assertEquals(ruleClassA.getAttribute(0),
-                 ruleClassA.getAttributeByName("my-string-attr"));
-    assertEquals(ruleClassA.getAttribute(1),
-                 ruleClassA.getAttributeByName("my-label-attr"));
-    assertEquals(ruleClassA.getAttribute(2),
-                 ruleClassA.getAttributeByName("my-labellist-attr"));
-    assertEquals(ruleClassA.getAttribute(3),
-                 ruleClassA.getAttributeByName("my-integer-attr"));
-    assertEquals(ruleClassA.getAttribute(4),
-                 ruleClassA.getAttributeByName("my-string-attr2"));
-    assertEquals(ruleClassA.getAttribute(5),
-                 ruleClassA.getAttributeByName("my-stringlist-attr"));
-    assertEquals(ruleClassA.getAttribute(6),
-                 ruleClassA.getAttributeByName("my-sorted-stringlist-attr"));
+    assertThat(ruleClassA.getAttributeByName("my-string-attr"))
+        .isEqualTo(ruleClassA.getAttribute(0));
+    assertThat(ruleClassA.getAttributeByName("my-label-attr"))
+        .isEqualTo(ruleClassA.getAttribute(1));
+    assertThat(ruleClassA.getAttributeByName("my-labellist-attr"))
+        .isEqualTo(ruleClassA.getAttribute(2));
+    assertThat(ruleClassA.getAttributeByName("my-integer-attr"))
+        .isEqualTo(ruleClassA.getAttribute(3));
+    assertThat(ruleClassA.getAttributeByName("my-string-attr2"))
+        .isEqualTo(ruleClassA.getAttribute(4));
+    assertThat(ruleClassA.getAttributeByName("my-stringlist-attr"))
+        .isEqualTo(ruleClassA.getAttribute(5));
+    assertThat(ruleClassA.getAttributeByName("my-sorted-stringlist-attr"))
+        .isEqualTo(ruleClassA.getAttribute(6));
 
     assertEquals("", // default based on type
                  ruleClassA.getAttribute(0).getDefaultValue(null));
-    assertEquals(Label.parseAbsolute("//default:label"),
-                 ruleClassA.getAttribute(1).getDefaultValue(null));
-    assertEquals(Collections.emptyList(),
-                 ruleClassA.getAttribute(2).getDefaultValue(null));
-    assertEquals(42,
-                 ruleClassA.getAttribute(3).getDefaultValue(null));
+    assertThat(ruleClassA.getAttribute(1).getDefaultValue(null))
+        .isEqualTo(Label.parseAbsolute("//default:label"));
+    assertThat(ruleClassA.getAttribute(2).getDefaultValue(null)).isEqualTo(Collections.emptyList());
+    assertThat(ruleClassA.getAttribute(3).getDefaultValue(null)).isEqualTo(42);
     assertEquals(null, // default explicitly specified
                  ruleClassA.getAttribute(4).getDefaultValue(null));
-    assertEquals(Collections.emptyList(),
-                 ruleClassA.getAttribute(5).getDefaultValue(null));
-    assertEquals(Collections.emptyList(),
-                 ruleClassA.getAttribute(6).getDefaultValue(null));
+    assertThat(ruleClassA.getAttribute(5).getDefaultValue(null)).isEqualTo(Collections.emptyList());
+    assertThat(ruleClassA.getAttribute(6).getDefaultValue(null)).isEqualTo(Collections.emptyList());
   }
 
   @Test
@@ -209,34 +202,34 @@
     RuleClass ruleClassA = createRuleClassA();
     RuleClass ruleClassB = createRuleClassB(ruleClassA);
 
-    assertEquals("ruleB", ruleClassB.getName());
-    assertEquals(8, ruleClassB.getAttributeCount());
+    assertThat(ruleClassB.getName()).isEqualTo("ruleB");
+    assertThat(ruleClassB.getAttributeCount()).isEqualTo(8);
 
-    assertEquals(0, (int) ruleClassB.getAttributeIndex("my-string-attr"));
-    assertEquals(1, (int) ruleClassB.getAttributeIndex("my-label-attr"));
-    assertEquals(2, (int) ruleClassB.getAttributeIndex("my-labellist-attr"));
-    assertEquals(3, (int) ruleClassB.getAttributeIndex("my-integer-attr"));
-    assertEquals(4, (int) ruleClassB.getAttributeIndex("my-string-attr2"));
-    assertEquals(5, (int) ruleClassB.getAttributeIndex("my-stringlist-attr"));
-    assertEquals(6, (int) ruleClassB.getAttributeIndex("my-sorted-stringlist-attr"));
-    assertEquals(7, (int) ruleClassB.getAttributeIndex("another-string-attr"));
+    assertThat((int) ruleClassB.getAttributeIndex("my-string-attr")).isEqualTo(0);
+    assertThat((int) ruleClassB.getAttributeIndex("my-label-attr")).isEqualTo(1);
+    assertThat((int) ruleClassB.getAttributeIndex("my-labellist-attr")).isEqualTo(2);
+    assertThat((int) ruleClassB.getAttributeIndex("my-integer-attr")).isEqualTo(3);
+    assertThat((int) ruleClassB.getAttributeIndex("my-string-attr2")).isEqualTo(4);
+    assertThat((int) ruleClassB.getAttributeIndex("my-stringlist-attr")).isEqualTo(5);
+    assertThat((int) ruleClassB.getAttributeIndex("my-sorted-stringlist-attr")).isEqualTo(6);
+    assertThat((int) ruleClassB.getAttributeIndex("another-string-attr")).isEqualTo(7);
 
-    assertEquals(ruleClassB.getAttribute(0),
-                 ruleClassB.getAttributeByName("my-string-attr"));
-    assertEquals(ruleClassB.getAttribute(1),
-                 ruleClassB.getAttributeByName("my-label-attr"));
-    assertEquals(ruleClassB.getAttribute(2),
-                 ruleClassB.getAttributeByName("my-labellist-attr"));
-    assertEquals(ruleClassB.getAttribute(3),
-                 ruleClassB.getAttributeByName("my-integer-attr"));
-    assertEquals(ruleClassB.getAttribute(4),
-                 ruleClassB.getAttributeByName("my-string-attr2"));
-    assertEquals(ruleClassB.getAttribute(5),
-                 ruleClassB.getAttributeByName("my-stringlist-attr"));
-    assertEquals(ruleClassB.getAttribute(6),
-                 ruleClassB.getAttributeByName("my-sorted-stringlist-attr"));
-    assertEquals(ruleClassB.getAttribute(7),
-                 ruleClassB.getAttributeByName("another-string-attr"));
+    assertThat(ruleClassB.getAttributeByName("my-string-attr"))
+        .isEqualTo(ruleClassB.getAttribute(0));
+    assertThat(ruleClassB.getAttributeByName("my-label-attr"))
+        .isEqualTo(ruleClassB.getAttribute(1));
+    assertThat(ruleClassB.getAttributeByName("my-labellist-attr"))
+        .isEqualTo(ruleClassB.getAttribute(2));
+    assertThat(ruleClassB.getAttributeByName("my-integer-attr"))
+        .isEqualTo(ruleClassB.getAttribute(3));
+    assertThat(ruleClassB.getAttributeByName("my-string-attr2"))
+        .isEqualTo(ruleClassB.getAttribute(4));
+    assertThat(ruleClassB.getAttributeByName("my-stringlist-attr"))
+        .isEqualTo(ruleClassB.getAttribute(5));
+    assertThat(ruleClassB.getAttributeByName("my-sorted-stringlist-attr"))
+        .isEqualTo(ruleClassB.getAttribute(6));
+    assertThat(ruleClassB.getAttributeByName("another-string-attr"))
+        .isEqualTo(ruleClassB.getAttribute(7));
   }
 
   private static final String TEST_PACKAGE_NAME = "testpackage";
@@ -301,7 +294,7 @@
     reporter.removeHandler(failFastHandler);
     createRule(depsRuleClass, "depsRule", attributeValues, testRuleLocation);
 
-    assertSame(3, eventCollector.count());
+    assertThat(eventCollector.count()).isSameAs(3);
     assertDupError("//testpackage:dup1", "list1", "depsRule");
     assertDupError("//testpackage:dup1", "list3", "depsRule");
     assertDupError("//testpackage:dup2", "list3", "depsRule");
@@ -380,29 +373,28 @@
     ).iterator();
 
     for (Event event : collector) {
-      assertEquals(TEST_RULE_DEFINED_AT_LINE,
-          event.getLocation().getStartLineAndColumn().getLine());
-      assertEquals(testBuildfilePath.asFragment(), event.getLocation().getPath());
-      assertEquals(TEST_RULE_LABEL.toString().substring(1)
-          + ": " + expectedMessages.next(), event.getMessage());
+      assertThat(event.getLocation().getStartLineAndColumn().getLine())
+          .isEqualTo(TEST_RULE_DEFINED_AT_LINE);
+      assertThat(event.getLocation().getPath()).isEqualTo(testBuildfilePath.asFragment());
+      assertThat(event.getMessage())
+          .isEqualTo(TEST_RULE_LABEL.toString().substring(1) + ": " + expectedMessages.next());
     }
 
     // Test basic rule properties:
-    assertEquals("ruleA", rule.getRuleClass());
-    assertEquals(TEST_RULE_NAME, rule.getName());
-    assertEquals(TEST_RULE_LABEL.substring(1), rule.getLabel().toString());
+    assertThat(rule.getRuleClass()).isEqualTo("ruleA");
+    assertThat(rule.getName()).isEqualTo(TEST_RULE_NAME);
+    assertThat(rule.getLabel().toString()).isEqualTo(TEST_RULE_LABEL.substring(1));
 
     // Test attribute access:
     AttributeMap attributes = RawAttributeMapper.of(rule);
-    assertEquals("//default:label",
-                 attributes.get("my-label-attr", BuildType.LABEL).toString());
-    assertEquals(42,
-                 attributes.get("my-integer-attr", Type.INTEGER).intValue());
+    assertThat(attributes.get("my-label-attr", BuildType.LABEL).toString())
+        .isEqualTo("//default:label");
+    assertThat(attributes.get("my-integer-attr", Type.INTEGER).intValue()).isEqualTo(42);
     assertEquals("",  // missing attribute -> default chosen based on type
                  attributes.get("my-string-attr", Type.STRING));
     assertThat(attributes.get("my-labellist-attr", BuildType.LABEL_LIST)).isEmpty();
-    assertEquals(Arrays.asList("foo", "bar"),
-                 attributes.get("my-stringlist-attr", Type.STRING_LIST));
+    assertThat(attributes.get("my-stringlist-attr", Type.STRING_LIST))
+        .isEqualTo(Arrays.asList("foo", "bar"));
     try {
       attributes.get("my-labellist-attr", Type.STRING); // wrong type
       fail();
@@ -449,7 +441,7 @@
     Set<String> set = new HashSet<>();
     for (OutputFile outputFile : rule.getOutputFiles()) {
       set.add(outputFile.getName());
-      assertSame(rule, outputFile.getGeneratingRule());
+      assertThat(outputFile.getGeneratingRule()).isSameAs(rule);
     }
     assertThat(set).containsExactly("foo-myrule.bar", "libmyrule-wazoo-myrule.mumble",
         "stuff-explicit_out-bar", "explicit_out");
@@ -482,12 +474,13 @@
 
     Rule rule = createRule(ruleClass, "myRule", Collections.<String, Object>emptyMap(),
         testRuleLocation);
-    assertEquals("libmyRule.bar", Iterables.getOnlyElement(rule.getOutputFiles()).getName());
+    assertThat(Iterables.getOnlyElement(rule.getOutputFiles()).getName())
+        .isEqualTo("libmyRule.bar");
 
     Rule ruleWithSlash = createRule(ruleClass, "myRule/with/slash",
         Collections.<String, Object>emptyMap(), testRuleLocation);
-    assertEquals("myRule/with/libslash.bar",
-                 Iterables.getOnlyElement(ruleWithSlash.getOutputFiles()).getName());
+    assertThat(Iterables.getOnlyElement(ruleWithSlash.getOutputFiles()).getName())
+        .isEqualTo("myRule/with/libslash.bar");
   }
 
   /**
@@ -528,13 +521,13 @@
    */
   private void checkValidComputedDefault(Object expectedValue, Attribute computedDefault,
       ImmutableMap<String, Object> attrValueMap) throws Exception {
-    assertTrue(computedDefault.getDefaultValueForTesting() instanceof Attribute.ComputedDefault);
+    assertThat(computedDefault.getDefaultValueForTesting() instanceof Attribute.ComputedDefault)
+        .isTrue();
     Rule rule = createRule(getRuleClassWithComputedDefault(computedDefault), "myRule",
         attrValueMap, testRuleLocation);
     AttributeMap attributes = RawAttributeMapper.of(rule);
-    assertEquals(
-        expectedValue,
-        attributes.get(computedDefault.getName(), computedDefault.getType()));
+    assertThat(attributes.get(computedDefault.getName(), computedDefault.getType()))
+        .isEqualTo(expectedValue);
   }
 
   /**
@@ -691,7 +684,7 @@
     List<String> actual = new ArrayList<>();
     for (OutputFile outputFile : rule.getOutputFiles()) {
       actual.add(outputFile.getName());
-      assertSame(rule, outputFile.getGeneratingRule());
+      assertThat(outputFile.getGeneratingRule()).isSameAs(rule);
     }
     assertWithMessage("unexpected output set").that(actual).containsExactly("first-myrule",
         "second-myrule", "out-third", "out-fourth", "third", "fourth");
@@ -768,10 +761,9 @@
     Rule rule = createRule(ruleClassA, "testrule", attributeValues, testRuleLocation);
     AttributeMap attributes = RawAttributeMapper.of(rule);
 
-    assertEquals(list,
-                 attributes.get("my-stringlist-attr", Type.STRING_LIST));
-    assertEquals(Arrays.asList("bar", "baz", "foo"),
-                 attributes.get("my-sorted-stringlist-attr", Type.STRING_LIST));
+    assertThat(attributes.get("my-stringlist-attr", Type.STRING_LIST)).isEqualTo(list);
+    assertThat(attributes.get("my-sorted-stringlist-attr", Type.STRING_LIST))
+        .isEqualTo(Arrays.asList("bar", "baz", "foo"));
   }
 
   private Rule createRule(
@@ -839,7 +831,7 @@
     reporter.removeHandler(failFastHandler);
     createRule(childRuleClass, "child_rule", childValues, testRuleLocation);
 
-    assertSame(1, eventCollector.count());
+    assertThat(eventCollector.count()).isSameAs(1);
     assertContainsEvent("//testpackage:child_rule: missing value for mandatory "
         + "attribute 'attr' in 'child_rule' rule");
   }
@@ -959,20 +951,21 @@
     final Rule dep2 = createRule(depClass, "dep2", Collections.<String, Object>emptyMap(),
         testRuleLocation);
 
-    ValidityPredicate checker = new ValidityPredicate() {
-      @Override
-      public String checkValid(Rule from, Rule to) {
-        assertEquals("top", from.getName());
-        if (to.getName().equals("dep1")) {
-          return "pear";
-        } else if (to.getName().equals("dep2")) {
-          return null;
-        } else {
-          fail("invalid dependency");
-          return null;
-        }
-      }
-    };
+    ValidityPredicate checker =
+        new ValidityPredicate() {
+          @Override
+          public String checkValid(Rule from, Rule to) {
+            assertThat(from.getName()).isEqualTo("top");
+            if (to.getName().equals("dep1")) {
+              return "pear";
+            } else if (to.getName().equals("dep2")) {
+              return null;
+            } else {
+              fail("invalid dependency");
+              return null;
+            }
+          }
+        };
 
     RuleClass topClass = new RuleClass.Builder("top", RuleClassType.NORMAL, false)
         .factory(DUMMY_CONFIGURED_TARGET_FACTORY)
@@ -984,10 +977,10 @@
     Rule topRule = createRule(topClass, "top", Collections.<String, Object>emptyMap(),
         testRuleLocation);
 
-    assertEquals("pear", topClass.getAttributeByName("deps").getValidityPredicate().checkValid(
-        topRule, dep1));
-    assertEquals(null, topClass.getAttributeByName("deps").getValidityPredicate().checkValid(
-        topRule, dep2));
+    assertThat(topClass.getAttributeByName("deps").getValidityPredicate().checkValid(topRule, dep1))
+        .isEqualTo("pear");
+    assertThat(topClass.getAttributeByName("deps").getValidityPredicate().checkValid(topRule, dep2))
+        .isNull();
   }
 
   /**
@@ -1006,8 +999,8 @@
         .build();
     final Rule defaultRule = createRule(defaultClass, "defaultRule",
         Collections.<String, Object>emptyMap(), testRuleLocation);
-    assertFalse(defaultRule.getRuleClassObject().isPreferredDependency(cppFile));
-    assertFalse(defaultRule.getRuleClassObject().isPreferredDependency(textFile));
+    assertThat(defaultRule.getRuleClassObject().isPreferredDependency(cppFile)).isFalse();
+    assertThat(defaultRule.getRuleClassObject().isPreferredDependency(textFile)).isFalse();
 
     // Make a rule that's preferred for C++ sources.
     RuleClass cppClass = new RuleClass.Builder("cppClass", RuleClassType.NORMAL, false)
@@ -1022,8 +1015,8 @@
         .build();
     final Rule cppRule = createRule(cppClass, "cppRule",
         Collections.<String, Object>emptyMap(), testRuleLocation);
-    assertTrue(cppRule.getRuleClassObject().isPreferredDependency(cppFile));
-    assertFalse(cppRule.getRuleClassObject().isPreferredDependency(textFile));
+    assertThat(cppRule.getRuleClassObject().isPreferredDependency(cppFile)).isTrue();
+    assertThat(cppRule.getRuleClassObject().isPreferredDependency(textFile)).isFalse();
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
index a2d34f3..a2dc4d3 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
@@ -14,10 +14,7 @@
 package com.google.devtools.build.lib.packages;
 
 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.assertSame;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertWithMessage;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.Lists;
@@ -72,26 +69,26 @@
             /*env=*/ null,
             new AttributeContainer(ruleClass));
 
-    assertSame(rule, rule.getAssociatedRule());
+    assertThat(rule.getAssociatedRule()).isSameAs(rule);
 
     // pkg.getRules() = [rule]
     Package pkg = pkgBuilder.build();
     assertThat(Sets.newHashSet(pkg.getTargets(Rule.class))).hasSize(1);
-    assertEquals(rule, pkg.getTargets(Rule.class).iterator().next());
+    assertThat(pkg.getTargets(Rule.class).iterator().next()).isEqualTo(rule);
 
-    assertSame(rule, pkg.getTarget("foo"));
+    assertThat(pkg.getTarget("foo")).isSameAs(rule);
 
-    assertEquals(Label.parseAbsolute("//mypkg:foo"), rule.getLabel());
-    assertEquals("foo", rule.getName());
+    assertThat(rule.getLabel()).isEqualTo(Label.parseAbsolute("//mypkg:foo"));
+    assertThat(rule.getName()).isEqualTo("foo");
 
-    assertEquals("cc_library", rule.getRuleClass());
-    assertEquals("cc_library rule", rule.getTargetKind());
-    assertEquals(42, rule.getLocation().getStartOffset());
-    assertFalse(rule.containsErrors());
+    assertThat(rule.getRuleClass()).isEqualTo("cc_library");
+    assertThat(rule.getTargetKind()).isEqualTo("cc_library rule");
+    assertThat(rule.getLocation().getStartOffset()).isEqualTo(42);
+    assertThat(rule.containsErrors()).isFalse();
 
     // Attr with explicitly-supplied value:
     AttributeMap attributes = RawAttributeMapper.of(rule);
-    assertTrue(attributes.get("alwayslink", Type.BOOLEAN));
+    assertThat(attributes.get("alwayslink", Type.BOOLEAN)).isTrue();
     try {
       attributes.get("alwayslink", Type.STRING); // type error: boolean, not string!
       fail();
@@ -107,8 +104,8 @@
 
     // Attrs with default values:
     // cc_library linkstatic default=0 according to build encyc.
-    assertFalse(attributes.get("linkstatic", Type.BOOLEAN));
-    assertFalse(attributes.get("testonly", Type.BOOLEAN));
+    assertThat(attributes.get("linkstatic", Type.BOOLEAN)).isFalse();
+    assertThat(attributes.get("testonly", Type.BOOLEAN)).isFalse();
     assertThat(attributes.get("srcs", BuildType.LABEL_LIST)).isEmpty();
   }
 
@@ -132,7 +129,7 @@
             Location.fromFileAndOffsets(myPkgPath.asFragment(), 42, 42),
             /*env=*/ null,
             new AttributeContainer(ruleClass));
-    assertFalse(rule.containsErrors());
+    assertThat(rule.containsErrors()).isFalse();
   }
 
   @Test
@@ -160,7 +157,7 @@
           new AttributeContainer(ruleClass));
       fail();
     } catch (RuleFactory.InvalidRuleException e) {
-      assertThat(e.getMessage()).contains("must be in the WORKSPACE file");
+      assertThat(e).hasMessageThat().contains("must be in the WORKSPACE file");
     }
   }
 
@@ -189,20 +186,21 @@
           new AttributeContainer(ruleClass));
       fail();
     } catch (RuleFactory.InvalidRuleException e) {
-      assertThat(e.getMessage()).contains("cannot be in the WORKSPACE file");
+      assertThat(e).hasMessageThat().contains("cannot be in the WORKSPACE file");
     }
   }
 
   private void assertAttr(RuleClass ruleClass, String attrName, Type<?> type) throws Exception {
-    assertTrue(
-        "Rule class '"
-            + ruleClass.getName()
-            + "' should have attribute '"
-            + attrName
-            + "' of type '"
-            + type
-            + "'",
-        ruleClass.hasAttr(attrName, type));
+    assertWithMessage(
+            "Rule class '"
+                + ruleClass.getName()
+                + "' should have attribute '"
+                + attrName
+                + "' of type '"
+                + type
+                + "'")
+        .that(ruleClass.hasAttr(attrName, type))
+        .isTrue();
   }
 
   @Test
@@ -229,7 +227,9 @@
           new AttributeContainer(ruleClass));
       fail();
     } catch (RuleFactory.InvalidRuleException e) {
-      assertTrue(e.getMessage(), e.getMessage().contains("output file name can't be equal '.'"));
+      assertWithMessage(e.getMessage())
+          .that(e.getMessage().contains("output file name can't be equal '.'"))
+          .isTrue();
     }
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
index 2876a62..2871523 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
@@ -14,17 +14,13 @@
 
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.events.Location.LineAndColumn;
 import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
 import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
 import com.google.devtools.build.lib.testutil.Scratch;
 import com.google.devtools.build.lib.vfs.Path;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -47,26 +43,26 @@
     Package pkg = packages.createPackage("x", buildFile);
     Rule rule = pkg.getRule("x");
 
-    assertEquals(new LineAndColumn(1, 1), rule.getLocation().getStartLineAndColumn());
+    assertThat(rule.getLocation().getStartLineAndColumn()).isEqualTo(new LineAndColumn(1, 1));
 
     // Special "name" attribute always has same location as rule:
-    assertEquals(new LineAndColumn(1, 1),
-                 rule.getAttributeLocation("name").getStartLineAndColumn());
+    assertThat(rule.getAttributeLocation("name").getStartLineAndColumn())
+        .isEqualTo(new LineAndColumn(1, 1));
 
     // User-provided attributes have precise locations:
-    assertEquals(new LineAndColumn(2, 18),
-                 rule.getAttributeLocation("srcs").getStartLineAndColumn());
-    assertEquals(new LineAndColumn(3, 21),
-                 rule.getAttributeLocation("defines").getStartLineAndColumn());
+    assertThat(rule.getAttributeLocation("srcs").getStartLineAndColumn())
+        .isEqualTo(new LineAndColumn(2, 18));
+    assertThat(rule.getAttributeLocation("defines").getStartLineAndColumn())
+        .isEqualTo(new LineAndColumn(3, 21));
 
     // Default attributes have same location as rule:
-    assertEquals(new LineAndColumn(1, 1),
-                 rule.getAttributeLocation("malloc").getStartLineAndColumn());
+    assertThat(rule.getAttributeLocation("malloc").getStartLineAndColumn())
+        .isEqualTo(new LineAndColumn(1, 1));
 
     // Attempts to locate non-existent attributes don't fail;
     // the rule location is returned:
-    assertEquals(new LineAndColumn(1, 1),
-                 rule.getAttributeLocation("no-such-attr").getStartLineAndColumn());
+    assertThat(rule.getAttributeLocation("no-such-attr").getStartLineAndColumn())
+        .isEqualTo(new LineAndColumn(1, 1));
   }
 
   @Test
@@ -80,7 +76,7 @@
 
     Package pkg = packages.createPackage("namecollide", buildFile);
     Rule genRule = pkg.getRule("hello_world");
-    assertFalse(genRule.containsErrors()); // TODO: assertTrue
+    assertThat(genRule.containsErrors()).isFalse(); // TODO: assertTrue
     events.assertContainsWarning("target 'hello_world' is both a rule and a file; please choose "
                                + "another name for the rule");
   }
@@ -96,9 +92,9 @@
         "          local = 1)");
     Package pkg = packages.createPackage("x", buildFile);
     Rule y = pkg.getRule("y");
-    assertFalse(TargetUtils.isLocalTestRule(y));
+    assertThat(TargetUtils.isLocalTestRule(y)).isFalse();
     Rule z = pkg.getRule("z");
-    assertTrue(TargetUtils.isLocalTestRule(z));
+    assertThat(TargetUtils.isLocalTestRule(z)).isTrue();
   }
 
   @Test
@@ -108,9 +104,9 @@
         "cc_test(name = 'z', deprecation = 'Foo')");
     Package pkg = packages.createPackage("x", buildFile);
     Rule y = pkg.getRule("y");
-    assertNull(TargetUtils.getDeprecation(y));
+    assertThat(TargetUtils.getDeprecation(y)).isNull();
     Rule z = pkg.getRule("z");
-    assertEquals("Foo", TargetUtils.getDeprecation(z));
+    assertThat(TargetUtils.getDeprecation(z)).isEqualTo("Foo");
   }
 
   @Test
@@ -123,9 +119,7 @@
         "cc_binary(name = 'cu',",
         "          visibility = ['//a:b'])"));
 
-    assertEquals(ConstantRuleVisibility.PUBLIC,
-        pkg.getRule("pu").getVisibility());
-    assertEquals(ConstantRuleVisibility.PRIVATE,
-        pkg.getRule("pr").getVisibility());
+    assertThat(pkg.getRule("pu").getVisibility()).isEqualTo(ConstantRuleVisibility.PUBLIC);
+    assertThat(pkg.getRule("pr").getVisibility()).isEqualTo(ConstantRuleVisibility.PRIVATE);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/TargetUtilsTest.java b/src/test/java/com/google/devtools/build/lib/packages/TargetUtilsTest.java
index c1fb849..6d49de9 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/TargetUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/TargetUtilsTest.java
@@ -14,9 +14,6 @@
 package com.google.devtools.build.lib.packages;
 
 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.assertTrue;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Lists;
@@ -33,8 +30,8 @@
 
   @Test
   public void getRuleLanguage() {
-    assertEquals("java", TargetUtils.getRuleLanguage("java_binary"));
-    assertEquals("foobar", TargetUtils.getRuleLanguage("foobar"));
+    assertThat(TargetUtils.getRuleLanguage("java_binary")).isEqualTo("java");
+    assertThat(TargetUtils.getRuleLanguage("foobar")).isEqualTo("foobar");
     assertThat(TargetUtils.getRuleLanguage("")).isEmpty();
   }
 
@@ -51,31 +48,31 @@
     Target  tag1b = getTarget("//tests:tag1b");
 
     Predicate<Target> tagFilter = TargetUtils.tagFilter(Lists.<String>newArrayList());
-    assertTrue(tagFilter.apply(tag1));
-    assertTrue(tagFilter.apply(tag2));
-    assertTrue(tagFilter.apply(tag1b));
+    assertThat(tagFilter.apply(tag1)).isTrue();
+    assertThat(tagFilter.apply(tag2)).isTrue();
+    assertThat(tagFilter.apply(tag1b)).isTrue();
     tagFilter = TargetUtils.tagFilter(Lists.newArrayList("tag1", "tag2"));
-    assertTrue(tagFilter.apply(tag1));
-    assertTrue(tagFilter.apply(tag2));
-    assertTrue(tagFilter.apply(tag1b));
+    assertThat(tagFilter.apply(tag1)).isTrue();
+    assertThat(tagFilter.apply(tag2)).isTrue();
+    assertThat(tagFilter.apply(tag1b)).isTrue();
     tagFilter = TargetUtils.tagFilter(Lists.newArrayList("tag1"));
-    assertTrue(tagFilter.apply(tag1));
-    assertFalse(tagFilter.apply(tag2));
-    assertTrue(tagFilter.apply(tag1b));
+    assertThat(tagFilter.apply(tag1)).isTrue();
+    assertThat(tagFilter.apply(tag2)).isFalse();
+    assertThat(tagFilter.apply(tag1b)).isTrue();
     tagFilter = TargetUtils.tagFilter(Lists.newArrayList("-tag2"));
-    assertTrue(tagFilter.apply(tag1));
-    assertFalse(tagFilter.apply(tag2));
-    assertTrue(tagFilter.apply(tag1b));
+    assertThat(tagFilter.apply(tag1)).isTrue();
+    assertThat(tagFilter.apply(tag2)).isFalse();
+    assertThat(tagFilter.apply(tag1b)).isTrue();
     // Applying same tag as positive and negative filter produces an empty
     // result because the negative filter is applied first and positive filter will
     // not match anything.
     tagFilter = TargetUtils.tagFilter(Lists.newArrayList("tag2", "-tag2"));
-    assertFalse(tagFilter.apply(tag1));
-    assertFalse(tagFilter.apply(tag2));
-    assertFalse(tagFilter.apply(tag1b));
+    assertThat(tagFilter.apply(tag1)).isFalse();
+    assertThat(tagFilter.apply(tag2)).isFalse();
+    assertThat(tagFilter.apply(tag1b)).isFalse();
     tagFilter = TargetUtils.tagFilter(Lists.newArrayList("tag2", "-tag1"));
-    assertFalse(tagFilter.apply(tag1));
-    assertTrue(tagFilter.apply(tag2));
-    assertFalse(tagFilter.apply(tag1b));
+    assertThat(tagFilter.apply(tag1)).isFalse();
+    assertThat(tagFilter.apply(tag2)).isTrue();
+    assertThat(tagFilter.apply(tag1b)).isFalse();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/TestSizeTest.java b/src/test/java/com/google/devtools/build/lib/packages/TestSizeTest.java
index b9ff3c8..a3d1f15 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/TestSizeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/TestSizeTest.java
@@ -13,8 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static com.google.common.truth.Truth.assertThat;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -28,43 +27,43 @@
 
   @Test
   public void testBasicConversion() {
-    assertEquals(TestSize.SMALL, TestSize.valueOf("SMALL"));
-    assertEquals(TestSize.MEDIUM, TestSize.valueOf("MEDIUM"));
-    assertEquals(TestSize.LARGE, TestSize.valueOf("LARGE"));
-    assertEquals(TestSize.ENORMOUS, TestSize.valueOf("ENORMOUS"));
+    assertThat(TestSize.valueOf("SMALL")).isEqualTo(TestSize.SMALL);
+    assertThat(TestSize.valueOf("MEDIUM")).isEqualTo(TestSize.MEDIUM);
+    assertThat(TestSize.valueOf("LARGE")).isEqualTo(TestSize.LARGE);
+    assertThat(TestSize.valueOf("ENORMOUS")).isEqualTo(TestSize.ENORMOUS);
   }
 
   @Test
   public void testGetDefaultTimeout() {
-    assertEquals(TestTimeout.SHORT, TestSize.SMALL.getDefaultTimeout());
-    assertEquals(TestTimeout.MODERATE, TestSize.MEDIUM.getDefaultTimeout());
-    assertEquals(TestTimeout.LONG, TestSize.LARGE.getDefaultTimeout());
-    assertEquals(TestTimeout.ETERNAL, TestSize.ENORMOUS.getDefaultTimeout());
+    assertThat(TestSize.SMALL.getDefaultTimeout()).isEqualTo(TestTimeout.SHORT);
+    assertThat(TestSize.MEDIUM.getDefaultTimeout()).isEqualTo(TestTimeout.MODERATE);
+    assertThat(TestSize.LARGE.getDefaultTimeout()).isEqualTo(TestTimeout.LONG);
+    assertThat(TestSize.ENORMOUS.getDefaultTimeout()).isEqualTo(TestTimeout.ETERNAL);
   }
 
   @Test
   public void testGetDefaultShards() {
-    assertEquals(2, TestSize.SMALL.getDefaultShards());
-    assertEquals(10, TestSize.MEDIUM.getDefaultShards());
-    assertEquals(20, TestSize.LARGE.getDefaultShards());
-    assertEquals(30, TestSize.ENORMOUS.getDefaultShards());
+    assertThat(TestSize.SMALL.getDefaultShards()).isEqualTo(2);
+    assertThat(TestSize.MEDIUM.getDefaultShards()).isEqualTo(10);
+    assertThat(TestSize.LARGE.getDefaultShards()).isEqualTo(20);
+    assertThat(TestSize.ENORMOUS.getDefaultShards()).isEqualTo(30);
   }
 
   @Test
   public void testGetTestSizeFromString() {
-    assertNull(TestSize.getTestSize("Small"));
-    assertNull(TestSize.getTestSize("Koala"));
-    assertEquals(TestSize.SMALL, TestSize.getTestSize("small"));
-    assertEquals(TestSize.MEDIUM, TestSize.getTestSize("medium"));
-    assertEquals(TestSize.LARGE, TestSize.getTestSize("large"));
-    assertEquals(TestSize.ENORMOUS, TestSize.getTestSize("enormous"));
+    assertThat(TestSize.getTestSize("Small")).isNull();
+    assertThat(TestSize.getTestSize("Koala")).isNull();
+    assertThat(TestSize.getTestSize("small")).isEqualTo(TestSize.SMALL);
+    assertThat(TestSize.getTestSize("medium")).isEqualTo(TestSize.MEDIUM);
+    assertThat(TestSize.getTestSize("large")).isEqualTo(TestSize.LARGE);
+    assertThat(TestSize.getTestSize("enormous")).isEqualTo(TestSize.ENORMOUS);
   }
 
   @Test
   public void testGetTestSizeFromDefaultTimeout() {
-    assertEquals(TestSize.SMALL, TestSize.getTestSize(TestTimeout.SHORT));
-    assertEquals(TestSize.MEDIUM, TestSize.getTestSize(TestTimeout.MODERATE));
-    assertEquals(TestSize.LARGE, TestSize.getTestSize(TestTimeout.LONG));
-    assertEquals(TestSize.ENORMOUS, TestSize.getTestSize(TestTimeout.ETERNAL));
+    assertThat(TestSize.getTestSize(TestTimeout.SHORT)).isEqualTo(TestSize.SMALL);
+    assertThat(TestSize.getTestSize(TestTimeout.MODERATE)).isEqualTo(TestSize.MEDIUM);
+    assertThat(TestSize.getTestSize(TestTimeout.LONG)).isEqualTo(TestSize.LARGE);
+    assertThat(TestSize.getTestSize(TestTimeout.ETERNAL)).isEqualTo(TestSize.ENORMOUS);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java b/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java
index 0258d52..2ff6446 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java
@@ -14,9 +14,6 @@
 package com.google.devtools.build.lib.packages;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -85,13 +82,13 @@
   public void testFilterBySize() throws Exception {
     Predicate<Target> sizeFilter =
         TestTargetUtils.testSizeFilter(EnumSet.of(TestSize.SMALL, TestSize.LARGE));
-    assertTrue(sizeFilter.apply(test1));
-    assertTrue(sizeFilter.apply(test2));
-    assertTrue(sizeFilter.apply(test1b));
+    assertThat(sizeFilter.apply(test1)).isTrue();
+    assertThat(sizeFilter.apply(test2)).isTrue();
+    assertThat(sizeFilter.apply(test1b)).isTrue();
     sizeFilter = TestTargetUtils.testSizeFilter(EnumSet.of(TestSize.SMALL));
-    assertTrue(sizeFilter.apply(test1));
-    assertTrue(sizeFilter.apply(test2));
-    assertFalse(sizeFilter.apply(test1b));
+    assertThat(sizeFilter.apply(test1)).isTrue();
+    assertThat(sizeFilter.apply(test2)).isTrue();
+    assertThat(sizeFilter.apply(test1b)).isFalse();
   }
 
   @Test
@@ -115,9 +112,9 @@
 
     Predicate<Target> timeoutFilter =
         TestTargetUtils.testTimeoutFilter(EnumSet.of(TestTimeout.SHORT, TestTimeout.LONG));
-    assertTrue(timeoutFilter.apply(longTest));
-    assertTrue(timeoutFilter.apply(shortTest));
-    assertFalse(timeoutFilter.apply(moderateTest));
+    assertThat(timeoutFilter.apply(longTest)).isTrue();
+    assertThat(timeoutFilter.apply(shortTest)).isTrue();
+    assertThat(timeoutFilter.apply(moderateTest)).isFalse();
   }
 
   @Test
@@ -156,7 +153,7 @@
             Sets.newHashSet(getTarget("//broken")), /*strict=*/
             false, /*keep_going=*/
             true);
-    assertTrue(actual.hasError());
+    assertThat(actual.hasError()).isTrue();
     assertThat(actual.getTargets()).isEmpty();
   }
 
@@ -165,7 +162,7 @@
     ResolvedTargets<Target> actual =
         TestTargetUtils.expandTestSuites(
             getPackageManager(), reporter, suites, /*strict=*/ false, /*keep_going=*/ true);
-    assertFalse(actual.hasError());
+    assertThat(actual.hasError()).isFalse();
     assertThat(actual.getTargets()).containsExactlyElementsIn(expected);
   }
 
@@ -186,7 +183,7 @@
             .getDriverForTesting()
             .evaluate(ImmutableList.of(key), false, 1, reporter);
     ResolvedTargets<Target> actual = result.get(key).getTargets();
-    assertFalse(actual.hasError());
+    assertThat(actual.hasError()).isFalse();
     assertThat(actual.getTargets()).containsExactlyElementsIn(expected);
   }
 
@@ -208,8 +205,8 @@
           false, /*keep_going=*/
           true);
     } catch (TargetParsingException e) {
-      assertNotNull(e.getMessage());
+      assertThat(e).hasMessageThat().isNotNull();
     }
-    assertTrue(Thread.currentThread().isInterrupted());
+    assertThat(Thread.currentThread().isInterrupted()).isTrue();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/TestTimeoutTest.java b/src/test/java/com/google/devtools/build/lib/packages/TestTimeoutTest.java
index 8b6201c..ec87911 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/TestTimeoutTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/TestTimeoutTest.java
@@ -13,15 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.packages;
 
+import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.packages.TestTimeout.ETERNAL;
 import static com.google.devtools.build.lib.packages.TestTimeout.LONG;
 import static com.google.devtools.build.lib.packages.TestTimeout.MODERATE;
 import static com.google.devtools.build.lib.packages.TestTimeout.SHORT;
 import static com.google.devtools.build.lib.packages.TestTimeout.getSuggestedTestTimeout;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,39 +32,39 @@
 
   @Test
   public void testBasicConversion() throws Exception {
-    assertSame(SHORT, TestTimeout.valueOf("SHORT"));
-    assertSame(MODERATE, TestTimeout.valueOf("MODERATE"));
-    assertSame(LONG, TestTimeout.valueOf("LONG"));
-    assertSame(ETERNAL, TestTimeout.valueOf("ETERNAL"));
+    assertThat(TestTimeout.valueOf("SHORT")).isSameAs(SHORT);
+    assertThat(TestTimeout.valueOf("MODERATE")).isSameAs(MODERATE);
+    assertThat(TestTimeout.valueOf("LONG")).isSameAs(LONG);
+    assertThat(TestTimeout.valueOf("ETERNAL")).isSameAs(ETERNAL);
   }
 
   @Test
   public void testSuggestedTestSize() throws Exception {
-    assertEquals(SHORT, getSuggestedTestTimeout(0));
-    assertEquals(SHORT, getSuggestedTestTimeout(2));
-    assertEquals(SHORT, getSuggestedTestTimeout(6));
-    assertEquals(SHORT, getSuggestedTestTimeout(59));
-    assertEquals(MODERATE, getSuggestedTestTimeout(60));
-    assertEquals(MODERATE, getSuggestedTestTimeout(299));
-    assertEquals(LONG, getSuggestedTestTimeout(300));
-    assertEquals(LONG, getSuggestedTestTimeout(899));
-    assertEquals(ETERNAL, getSuggestedTestTimeout(900));
-    assertEquals(ETERNAL, getSuggestedTestTimeout(1234567890));
+    assertThat(getSuggestedTestTimeout(0)).isEqualTo(SHORT);
+    assertThat(getSuggestedTestTimeout(2)).isEqualTo(SHORT);
+    assertThat(getSuggestedTestTimeout(6)).isEqualTo(SHORT);
+    assertThat(getSuggestedTestTimeout(59)).isEqualTo(SHORT);
+    assertThat(getSuggestedTestTimeout(60)).isEqualTo(MODERATE);
+    assertThat(getSuggestedTestTimeout(299)).isEqualTo(MODERATE);
+    assertThat(getSuggestedTestTimeout(300)).isEqualTo(LONG);
+    assertThat(getSuggestedTestTimeout(899)).isEqualTo(LONG);
+    assertThat(getSuggestedTestTimeout(900)).isEqualTo(ETERNAL);
+    assertThat(getSuggestedTestTimeout(1234567890)).isEqualTo(ETERNAL);
   }
 
   @Test
   public void testIsInRangeExact() throws Exception {
-    assertTrue(SHORT.isInRangeExact(0));
-    assertTrue(SHORT.isInRangeExact(1));
-    assertFalse(SHORT.isInRangeExact(60));
-    assertTrue(MODERATE.isInRangeExact(60));
-    assertTrue(MODERATE.isInRangeExact(299));
-    assertFalse(MODERATE.isInRangeExact(300));
-    assertTrue(LONG.isInRangeExact(300));
-    assertTrue(LONG.isInRangeExact(899));
-    assertFalse(LONG.isInRangeExact(900));
-    assertTrue(ETERNAL.isInRangeExact(900));
-    assertFalse(ETERNAL.isInRangeExact(1234567890));
+    assertThat(SHORT.isInRangeExact(0)).isTrue();
+    assertThat(SHORT.isInRangeExact(1)).isTrue();
+    assertThat(SHORT.isInRangeExact(60)).isFalse();
+    assertThat(MODERATE.isInRangeExact(60)).isTrue();
+    assertThat(MODERATE.isInRangeExact(299)).isTrue();
+    assertThat(MODERATE.isInRangeExact(300)).isFalse();
+    assertThat(LONG.isInRangeExact(300)).isTrue();
+    assertThat(LONG.isInRangeExact(899)).isTrue();
+    assertThat(LONG.isInRangeExact(900)).isFalse();
+    assertThat(ETERNAL.isInRangeExact(900)).isTrue();
+    assertThat(ETERNAL.isInRangeExact(1234567890)).isFalse();
   }
 
   @Test
@@ -80,14 +77,14 @@
 
   private void assertFuzzyRange(TestTimeout timeout, int min, int max) {
     if (min > 0) {
-      assertFalse(timeout.isInRangeFuzzy(min - 1));
+      assertThat(timeout.isInRangeFuzzy(min - 1)).isFalse();
     }
-    assertTrue(timeout.isInRangeFuzzy(min));
-    assertTrue(timeout.isInRangeFuzzy(min + 1));
-    assertTrue(timeout.isInRangeFuzzy(max - 1));
-    assertTrue(timeout.isInRangeFuzzy(max));
+    assertThat(timeout.isInRangeFuzzy(min)).isTrue();
+    assertThat(timeout.isInRangeFuzzy(min + 1)).isTrue();
+    assertThat(timeout.isInRangeFuzzy(max - 1)).isTrue();
+    assertThat(timeout.isInRangeFuzzy(max)).isTrue();
     if (max < Integer.MAX_VALUE) {
-      assertFalse(timeout.isInRangeFuzzy(max + 1));
+      assertThat(timeout.isInRangeFuzzy(max + 1)).isFalse();
     }
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
index 84a6a29..4fe5b71 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
@@ -15,8 +15,6 @@
 package com.google.devtools.build.lib.packages;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.ImmutableList;
@@ -52,7 +50,7 @@
   @Test
   public void testWorkspaceName() throws Exception {
     WorkspaceFactoryHelper helper = parse("workspace(name = 'my_ws')");
-    assertEquals("my_ws", helper.getPackage().getWorkspaceName());
+    assertThat(helper.getPackage().getWorkspaceName()).isEqualTo("my_ws");
   }
 
   @Test
@@ -140,12 +138,12 @@
     }
 
     public void assertLexingExceptionThrown() {
-      assertNotNull(exception);
-      assertThat(exception.getMessage()).contains("Failed to parse /workspace/WORKSPACE");
+      assertThat(exception).isNotNull();
+      assertThat(exception).hasMessageThat().contains("Failed to parse /workspace/WORKSPACE");
     }
 
     public String getLexerError() {
-      assertEquals(1, events.size());
+      assertThat(events).hasSize(1);
       return events.get(0).getMessage();
     }
 
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java
index 6db8486..a7103c4 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java
@@ -14,10 +14,7 @@
 package com.google.devtools.build.lib.packages.util;
 
 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.assertSame;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertWithMessage;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.ImmutableList;
@@ -65,7 +62,7 @@
       throws InterruptedException, IOException {
     Path file = scratch.file("/pkg/BUILD", content);
     Package pkg = packages.eval("pkg", file);
-    assertFalse(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isFalse();
     return pkg;
   }
 
@@ -73,7 +70,9 @@
     events.setFailFast(false);
     Path file = scratch.file("/pkg/BUILD", content);
     Package pkg = packages.eval("pkg", file);
-    assertTrue("Expected evaluation error, but none was not reported", pkg.containsErrors());
+    assertWithMessage("Expected evaluation error, but none was not reported")
+        .that(pkg.containsErrors())
+        .isTrue();
     events.assertContainsError(expectedError);
   }
 
@@ -90,9 +89,9 @@
     for (String outName : outNames) {
       OutputFile out = (OutputFile) pkg.getTarget(outName);
       assertThat(rule.getOutputFiles()).contains(out);
-      assertSame(rule, out.getGeneratingRule());
-      assertEquals(outName, out.getName());
-      assertEquals("generated file", out.getTargetKind());
+      assertThat(out.getGeneratingRule()).isSameAs(rule);
+      assertThat(out.getName()).isEqualTo(outName);
+      assertThat(out.getTargetKind()).isEqualTo("generated file");
     }
     assertThat(rule.getOutputFiles()).hasSize(outNames.size());
   }
@@ -161,7 +160,7 @@
     Package pkg = buildPackageWithGlob(globCallExpression);
 
     events.assertContainsError(expectedError);
-    assertTrue(pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isTrue();
   }
 
   private Package buildPackageWithGlob(String globCallExpression) throws Exception {
@@ -208,9 +207,11 @@
     GlobCache globCache = evaluated.second;
 
     // Ensure all of the patterns are recorded against this package:
-    assertTrue(globCache.getKeySet().containsAll(createGlobCacheKeys(includes, excludeDirs)));
-    assertTrue(globCache.getKeySet().containsAll(createGlobCacheKeys(excludes, excludeDirs)));
-    assertFalse(pkg.containsErrors());
+    assertThat(globCache.getKeySet().containsAll(createGlobCacheKeys(includes, excludeDirs)))
+        .isTrue();
+    assertThat(globCache.getKeySet().containsAll(createGlobCacheKeys(excludes, excludeDirs)))
+        .isTrue();
+    assertThat(pkg.containsErrors()).isFalse();
   }
 
   /**
@@ -246,7 +247,7 @@
     events.setFailFast(false);
     Package pkg =
         evaluateGlob(ImmutableList.of(pattern), Collections.<String>emptyList(), false, "").first;
-    assertEquals(errorExpected, pkg.containsErrors());
+    assertThat(pkg.containsErrors()).isEqualTo(errorExpected);
     boolean foundError = false;
     for (Event event : events.collector()) {
       if (event.getMessage().contains("glob")) {
@@ -258,7 +259,7 @@
         break;
       }
     }
-    assertEquals(errorExpected, foundError);
+    assertThat(foundError).isEqualTo(errorExpected);
   }
 
   /** Runnable that asks for parsing of build file and synchronizes it with