diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
index f522433..924e3ba 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
@@ -120,26 +120,26 @@
   @Test
   public void testAttributeAspect_WrapsAndAddsToMap() throws Exception {
     AspectDefinition withAspects = new AspectDefinition.Builder(TEST_ASPECT_CLASS)
-        .attributeAspect("srcs", TEST_ASPECT_CLASS)
-        .attributeAspect("deps", TEST_ASPECT_CLASS)
+        .propagateAlongAttribute("srcs")
+        .propagateAlongAttribute("deps")
         .build();
 
-    assertThat(withAspects.getAttributeAspects(createLabelListAttribute("srcs")))
-        .containsExactly(TEST_ASPECT_CLASS);
-    assertThat(withAspects.getAttributeAspects(createLabelListAttribute("deps")))
-        .containsExactly(TEST_ASPECT_CLASS);
+    assertThat(withAspects.propagateAlong(createLabelListAttribute("srcs")))
+        .isTrue();
+    assertThat(withAspects.propagateAlong(createLabelListAttribute("deps")))
+        .isTrue();
   }
 
   @Test
   public void testAttributeAspect_AllAttributes() throws Exception {
     AspectDefinition withAspects = new AspectDefinition.Builder(TEST_ASPECT_CLASS)
-        .allAttributesAspect(TEST_ASPECT_CLASS)
+        .propagateAlongAllAttributes()
         .build();
 
-    assertThat(withAspects.getAttributeAspects(createLabelListAttribute("srcs")))
-        .containsExactly(TEST_ASPECT_CLASS);
-    assertThat(withAspects.getAttributeAspects(createLabelListAttribute("deps")))
-        .containsExactly(TEST_ASPECT_CLASS);
+    assertThat(withAspects.propagateAlong(createLabelListAttribute("srcs")))
+        .isTrue();
+    assertThat(withAspects.propagateAlong(createLabelListAttribute("deps")))
+        .isTrue();
   }
 
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
index 724b1c5..2926564 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
@@ -251,7 +251,7 @@
   public static final AttributeAspect ATTRIBUTE_ASPECT = new AttributeAspect();
   private static final AspectDefinition ATTRIBUTE_ASPECT_DEFINITION =
       new AspectDefinition.Builder(ATTRIBUTE_ASPECT)
-      .attributeAspect("foo", ATTRIBUTE_ASPECT)
+      .propagateAlongAttribute("foo")
       .build();
 
   /**
@@ -267,7 +267,7 @@
   public static final NativeAspectClass ALL_ATTRIBUTES_ASPECT = new AllAttributesAspect();
   private static final AspectDefinition ALL_ATTRIBUTES_ASPECT_DEFINITION =
       new AspectDefinition.Builder(ALL_ATTRIBUTES_ASPECT)
-          .allAttributesAspect(ALL_ATTRIBUTES_ASPECT)
+          .propagateAlongAllAttributes()
           .build();
 
   /** An aspect that propagates along all attributes and has a tool dependency. */
@@ -283,7 +283,7 @@
       new AllAttributesWithToolAspect();
   private static final AspectDefinition ALL_ATTRIBUTES_WITH_TOOL_ASPECT_DEFINITION =
       new AspectDefinition.Builder(ALL_ATTRIBUTES_WITH_TOOL_ASPECT)
-          .allAttributesAspect(ALL_ATTRIBUTES_WITH_TOOL_ASPECT)
+          .propagateAlongAllAttributes()
           .add(
               attr("$tool", BuildType.LABEL)
                   .allowedFileTypes(FileTypeSet.ANY_FILE)
@@ -338,7 +338,7 @@
     public AspectDefinition getDefinition(AspectParameters aspectParameters) {
       AspectDefinition.Builder builder =
           new AspectDefinition.Builder(PARAMETRIZED_DEFINITION_ASPECT)
-              .attributeAspect("foo", this);
+              .propagateAlongAttribute("foo");
       ImmutableCollection<String> baz = aspectParameters.getAttribute("baz");
       if (baz != null) {
         try {
@@ -413,7 +413,7 @@
   public static final WarningAspect WARNING_ASPECT = new WarningAspect();
   private static final AspectDefinition WARNING_ASPECT_DEFINITION =
       new AspectDefinition.Builder(WARNING_ASPECT)
-      .attributeAspect("bar", WARNING_ASPECT)
+      .propagateAlongAttribute("bar")
       .build();
 
   /**
@@ -438,7 +438,7 @@
   public static final ErrorAspect ERROR_ASPECT = new ErrorAspect();
   private static final AspectDefinition ERROR_ASPECT_DEFINITION =
       new AspectDefinition.Builder(ERROR_ASPECT)
-      .attributeAspect("bar", ERROR_ASPECT)
+      .propagateAlongAttribute("bar")
       .build();
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 0575203..37d4cea 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -1134,9 +1134,9 @@
         "my_aspect = aspect(_impl, attr_aspects=['*'])");
 
     SkylarkAspect myAspect = (SkylarkAspect) lookup("my_aspect");
-    assertThat(myAspect.getDefinition(AspectParameters.EMPTY).getAttributeAspects(
+    assertThat(myAspect.getDefinition(AspectParameters.EMPTY).propagateAlong(
         Attribute.attr("foo", BuildType.LABEL).allowedFileTypes().build()
-    )).containsExactly(myAspect.getAspectClass());
+    )).isTrue();
   }
 
   @Test
