aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/junit/runners/model/TestClass.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/junit/runners/model/TestClass.java')
-rwxr-xr-x[-rw-r--r--]src/main/java/org/junit/runners/model/TestClass.java57
1 files changed, 11 insertions, 46 deletions
diff --git a/src/main/java/org/junit/runners/model/TestClass.java b/src/main/java/org/junit/runners/model/TestClass.java
index 5962c2b..c8a544d 100644..100755
--- a/src/main/java/org/junit/runners/model/TestClass.java
+++ b/src/main/java/org/junit/runners/model/TestClass.java
@@ -84,21 +84,20 @@ public class TestClass implements Annotatable {
for (Annotation each : member.getAnnotations()) {
Class<? extends Annotation> type = each.annotationType();
List<T> members = getAnnotatedMembers(map, type, true);
- T memberToAdd = member.handlePossibleBridgeMethod(members);
- if (memberToAdd == null) {
+ if (member.isShadowedBy(members)) {
return;
}
if (runsTopToBottom(type)) {
- members.add(0, memberToAdd);
+ members.add(0, member);
} else {
- members.add(memberToAdd);
+ members.add(member);
}
}
}
private static <T extends FrameworkMember<T>> Map<Class<? extends Annotation>, List<T>>
makeDeeplyUnmodifiable(Map<Class<? extends Annotation>, List<T>> source) {
- Map<Class<? extends Annotation>, List<T>> copy =
+ LinkedHashMap<Class<? extends Annotation>, List<T>> copy =
new LinkedHashMap<Class<? extends Annotation>, List<T>>();
for (Map.Entry<Class<? extends Annotation>, List<T>> entry : source.entrySet()) {
copy.put(entry.getKey(), Collections.unmodifiableList(entry.getValue()));
@@ -169,7 +168,7 @@ public class TestClass implements Annotatable {
}
private static List<Class<?>> getSuperClasses(Class<?> testClass) {
- List<Class<?>> results = new ArrayList<Class<?>>();
+ ArrayList<Class<?>> results = new ArrayList<Class<?>>();
Class<?> current = testClass;
while (current != null) {
results.add(current);
@@ -225,59 +224,24 @@ public class TestClass implements Annotatable {
public <T> List<T> getAnnotatedFieldValues(Object test,
Class<? extends Annotation> annotationClass, Class<T> valueClass) {
- final List<T> results = new ArrayList<T>();
- collectAnnotatedFieldValues(test, annotationClass, valueClass,
- new MemberValueConsumer<T>() {
- public void accept(FrameworkMember<?> member, T value) {
- results.add(value);
- }
- });
- return results;
- }
-
- /**
- * Finds the fields annotated with the specified annotation and having the specified type,
- * retrieves the values and passes those to the specified consumer.
- *
- * @since 4.13
- */
- public <T> void collectAnnotatedFieldValues(Object test,
- Class<? extends Annotation> annotationClass, Class<T> valueClass,
- MemberValueConsumer<T> consumer) {
+ List<T> results = new ArrayList<T>();
for (FrameworkField each : getAnnotatedFields(annotationClass)) {
try {
Object fieldValue = each.get(test);
if (valueClass.isInstance(fieldValue)) {
- consumer.accept(each, valueClass.cast(fieldValue));
+ results.add(valueClass.cast(fieldValue));
}
} catch (IllegalAccessException e) {
throw new RuntimeException(
"How did getFields return a field we couldn't access?", e);
}
}
+ return results;
}
public <T> List<T> getAnnotatedMethodValues(Object test,
Class<? extends Annotation> annotationClass, Class<T> valueClass) {
- final List<T> results = new ArrayList<T>();
- collectAnnotatedMethodValues(test, annotationClass, valueClass,
- new MemberValueConsumer<T>() {
- public void accept(FrameworkMember<?> member, T value) {
- results.add(value);
- }
- });
- return results;
- }
-
- /**
- * Finds the methods annotated with the specified annotation and returning the specified type,
- * invokes it and pass the return value to the specified consumer.
- *
- * @since 4.13
- */
- public <T> void collectAnnotatedMethodValues(Object test,
- Class<? extends Annotation> annotationClass, Class<T> valueClass,
- MemberValueConsumer<T> consumer) {
+ List<T> results = new ArrayList<T>();
for (FrameworkMethod each : getAnnotatedMethods(annotationClass)) {
try {
/*
@@ -290,13 +254,14 @@ public class TestClass implements Annotatable {
*/
if (valueClass.isAssignableFrom(each.getReturnType())) {
Object fieldValue = each.invokeExplosively(test);
- consumer.accept(each, valueClass.cast(fieldValue));
+ results.add(valueClass.cast(fieldValue));
}
} catch (Throwable e) {
throw new RuntimeException(
"Exception in " + each.getName(), e);
}
}
+ return results;
}
public boolean isPublic() {