Open Source Repository

Home /junit/junit-4.8.2 | Repository Home



org/junit/internal/builders/AllDefaultPossibilitiesBuilder.java
/**
 *
 */
package org.junit.internal.builders;

import java.util.Arrays;
import java.util.List;

import org.junit.runner.Runner;
import org.junit.runners.model.RunnerBuilder;

public class AllDefaultPossibilitiesBuilder extends RunnerBuilder {
  private final boolean fCanUseSuiteMethod;

  public AllDefaultPossibilitiesBuilder(boolean canUseSuiteMethod) {
    fCanUseSuiteMethod= canUseSuiteMethod;
  }

  @Override
  public Runner runnerForClass(Class<?> testClassthrows Throwable {
    List<RunnerBuilder> builders= Arrays.asList(
        ignoredBuilder(),
        annotatedBuilder(),
        suiteMethodBuilder(),
        junit3Builder(),
        junit4Builder());

    for (RunnerBuilder each : builders) {
      Runner runner= each.safeRunnerForClass(testClass);
      if (runner != null)
        return runner;
    }
    return null;
  }

  protected JUnit4Builder junit4Builder() {
    return new JUnit4Builder();
  }

  protected JUnit3Builder junit3Builder() {
    return new JUnit3Builder();
  }

  protected AnnotatedBuilder annotatedBuilder() {
    return new AnnotatedBuilder(this);
  }

  protected IgnoredBuilder ignoredBuilder() {
    return new IgnoredBuilder();
  }

  protected RunnerBuilder suiteMethodBuilder() {
    if (fCanUseSuiteMethod)
      return new SuiteMethodBuilder();
    return new NullBuilder();
  }
}