@Override public Runner getRunner() { try { return new Suite((Class<?>) null, runners) { }; } catch (InitializationError e) { return new ErrorReportingRunner(null, e); } } };
@Override public Description getDescription() { Description description = Description.createSuiteDescription(classNames); for (Throwable each : causes) { description.addChild(describeCause()); } return description; }
public ErrorReportingRunner(Class<?> testClass, Throwable cause) { fTestClass = testClass; fCauses = getCauses(cause); }
public ErrorReportingRunner(Throwable cause, Class<?>... testClasses) { if (testClasses == null || testClasses.length == 0) { throw new NullPointerException("Test classes cannot be null or empty"); } for (Class<?> testClass : testClasses) { if (testClass == null) { throw new NullPointerException("Test class cannot be null"); } } classNames = getClassNames(testClasses); causes = getCauses(cause); }
@Override public void run(RunNotifier notifier) { for (Throwable each : causes) { runCause(each, notifier); } }
@Override public void run(RunNotifier notifier) { for (Throwable each : fCauses) { runCause(each, notifier); } }
@Override public Runner getRunner() { try { return new Suite((Class<?>) null, runners) { }; } catch (InitializationError e) { return new ErrorReportingRunner(null, e); } } };
@Override public Description getDescription() { Description description = Description.createSuiteDescription(fTestClass); for (Throwable each : fCauses) { description.addChild(describeCause(each)); } return description; }
@SuppressWarnings("deprecation") private List<Throwable> getCauses(Throwable cause) { if (cause instanceof InvocationTargetException) { return getCauses(cause.getCause()); } if (cause instanceof InitializationError) { return ((InitializationError) cause).getCauses(); } if (cause instanceof org.junit.internal.runners.InitializationError) { return ((org.junit.internal.runners.InitializationError) cause) .getCauses(); } return Arrays.asList(cause); }
@Override public void run(RunNotifier notifier) { for (Throwable each : fCauses) { runCause(each, notifier); } }
/** * Creates a {@link Request} that, when processed, will report an error for the given * test class with the given cause. */ public static Request errorReport(Class<?> klass, Throwable cause) { return runner(new ErrorReportingRunner(klass, cause)); }
private void runCause(Throwable child, RunNotifier notifier) { Description description = describeCause(); notifier.fireTestStarted(description); notifier.fireTestFailure(new Failure(description, child)); notifier.fireTestFinished(description); } }
@SuppressWarnings("deprecation") private List<Throwable> getCauses(Throwable cause) { if (cause instanceof InvocationTargetException) { return getCauses(cause.getCause()); } if (cause instanceof InvalidTestClassError) { return singletonList(cause); } if (cause instanceof InitializationError) { return ((InitializationError) cause).getCauses(); } if (cause instanceof org.junit.internal.runners.InitializationError) { return ((org.junit.internal.runners.InitializationError) cause) .getCauses(); } return singletonList(cause); }
@Override public void run(RunNotifier notifier) { for (Throwable each : causes) { runCause(each, notifier); } }
/** * Not used within JUnit. Clients should simply instantiate ErrorReportingRunner themselves */ @Deprecated public static Request errorReport(Class<?> klass, Throwable cause) { return runner(new ErrorReportingRunner(klass, cause)); }
private void runCause(Throwable child, RunNotifier notifier) { Description description = describeCause(child); notifier.fireTestStarted(description); notifier.fireTestFailure(new Failure(description, child)); notifier.fireTestFinished(description); } }
public ErrorReportingRunner(Class<?> testClass, Throwable cause) { fTestClass = testClass; fCauses = getCauses(cause); }
@Override public void run(RunNotifier notifier) { for (Throwable each : fCauses) { runCause(each, notifier); } }
/** * Always returns a runner, even if it is just one that prints an error instead of running tests. * * @param testClass class to be run * @return a Runner */ public Runner safeRunnerForClass(Class<?> testClass) { try { return runnerForClass(testClass); } catch (Throwable e) { return new ErrorReportingRunner(testClass, e); } }
@Override public Description getDescription() { Description description = Description.createSuiteDescription(fTestClass); for (Throwable each : fCauses) { description.addChild(describeCause(each)); } return description; }