/** @return all the @Listeners annotations found in the current class and its superclasses. */ @SuppressWarnings("unchecked") public static ListenerHolder findAllListeners(Class<?> cls, IAnnotationFinder finder) { ListenerHolder result = new ListenerHolder(); result.listenerClasses = Lists.newArrayList(); while (cls != Object.class) { IListenersAnnotation l = finder.findAnnotation(cls, IListenersAnnotation.class); if (l != null) { Class<? extends ITestNGListener>[] classes = l.getValue(); for (Class<? extends ITestNGListener> c : classes) { result.listenerClasses.add(c); if (ITestNGListenerFactory.class.isAssignableFrom(c)) { if (result.listenerFactoryClass == null) { result.listenerFactoryClass = (Class<? extends ITestNGListenerFactory>) c; } else { throw new TestNGException( "Found more than one class implementing " + "ITestNGListenerFactory:" + c + " and " + result.listenerFactoryClass); } } } } cls = cls.getSuperclass(); } return result; }
TestListenerHelper.findAllListeners(realClass, m_annotationFinder); if (listenerFactoryClass == null) { listenerFactoryClass = listenerHolder.getListenerFactoryClass(); listenerClasses.addAll(listenerHolder.getListenerClasses());
TestListenerHelper.ListenerHolder listenerHolder = TestListenerHelper.findAllListeners(realClass, m_annotationFinder); if (listenerFactoryClass == null) { listenerFactoryClass = listenerHolder.getListenerFactoryClass(); listenerClasses.addAll(listenerHolder.getListenerClasses());
/** * @return all the @Listeners annotations found in the current class and its * superclasses. */ public static ListenerHolder findAllListeners(Class<?> cls, IAnnotationFinder finder) { ListenerHolder result = new ListenerHolder(); result.listenerClasses = Lists.newArrayList(); while (cls != Object.class) { IListenersAnnotation l = finder.findAnnotation(cls, IListenersAnnotation.class); if (l != null) { Class<? extends ITestNGListener>[] classes = l.getValue(); for (Class<? extends ITestNGListener> c : classes) { result.listenerClasses.add(c); if (ITestNGListenerFactory.class.isAssignableFrom(c)) { if (result.listenerFactoryClass == null) { result.listenerFactoryClass = (Class<? extends ITestNGListenerFactory>) c; } else { throw new TestNGException("Found more than one class implementing " + "ITestNGListenerFactory:" + c + " and " + result.listenerFactoryClass); } } } } cls = cls.getSuperclass(); } return result; }
@Test(dataProvider = "getTestData") public void testfindAllListeners(Class<?> clazz, int expectedSize, boolean testFactoryClass) { TestListenerHelper.ListenerHolder holder = TestListenerHelper.findAllListeners(clazz, finder); assertThat(holder.getListenerClasses()).hasSize(expectedSize); if (testFactoryClass) { assertThat(holder.getListenerFactoryClass()).isNotNull(); } }