private void extractClassesFromTestClass(final Class<?> element, Set<String> classesToPrepareForTest) { Class<?> classToInvestigate = element; while (classToInvestigate != null && !classToInvestigate.equals(Object.class)) { extractClassesAndAddThemToList(classToInvestigate, classesToPrepareForTest); if (includeMethods) { classesToPrepareForTest.addAll(lookOverMethods(classToInvestigate)); } classToInvestigate = classToInvestigate.getSuperclass(); } }
private void extractClassesAndAddThemToList(AnnotatedElement elementToExtractClassFrom, final Set<String> classesToPrepareForTest) { final String[] classesToModify = getClassesToModify(elementToExtractClassFrom); if (classesToModify != null) { Collections.addAll(classesToPrepareForTest, classesToModify); } }
/** * If {@code element} is a class this method traverses the hierarchy * and extracts classes that should be prepared for test in all super * classes. */ @Override public final String[] getTestClasses(AnnotatedElement element) { final Set<String> classesToPrepareForTest = new HashSet<String>(); if (element instanceof Class<?>) { extractClassesFromTestClass((Class<?>) element, classesToPrepareForTest); } else { extractClassesAndAddThemToList(element, classesToPrepareForTest); } return classesToPrepareForTest.toArray(new String[classesToPrepareForTest.size()]); }
private Collection<String> lookOverMethods(Class<?> classToInvestigate) { Set<String> classesToPrepareForTest = new HashSet<String>(); for (Method method : classToInvestigate.getMethods()) { extractClassesAndAddThemToList(method, classesToPrepareForTest); } return classesToPrepareForTest; }
@Override public boolean isPrepared(AnnotatedElement element, String fullyQualifiedClassName) { if (fullyQualifiedClassName == null) { throw new IllegalArgumentException("fullyQualifiedClassName cannot be null."); } final String[] testClasses = getTestClasses(element); for (String className : testClasses) { if (className.equals(fullyQualifiedClassName)) { return true; } } return false; } }