/******************************************************************************* * Copyright (c) 2013, 2014 Ericsson * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Alexandre Montplaisir - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.tmf.core.tests.shared; import org.junit.runner.notification.RunNotifier; import org.junit.runners.Suite; import org.junit.runners.model.InitializationError; /** * Test suite that adds a {@link DebugListener} to unit tests, to help debug * misbehaving tests. * * Use with @RunWith(DebugSuite) and DebugSuite.SuiteClasses({ }) * * @author Alexandre Montplaisir */ public class DebugSuite extends Suite { /** * Constructor (required by JUnit) * * @param klass * Root of the suite * @throws InitializationError * If an error happened when getting the test classes */ public DebugSuite(Class<?> klass) throws InitializationError { super(klass, getAnnotatedClasses(klass)); } @Override public void run(RunNotifier runNotifier) { runNotifier.addListener(new DebugListener()); super.run(runNotifier); } private static Class<?>[] getAnnotatedClasses(Class<?> klass) throws InitializationError { SuiteClasses annotation = klass.getAnnotation(SuiteClasses.class); if (annotation == null) { throw new InitializationError(String.format("class '%s' must have a SuiteClasses annotation", klass.getName())); } return annotation.value(); } }