diff options
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.java | 57 |
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() { |