1 package org.junit.internal.builders; 2 3 import java.util.Arrays; 4 import java.util.List; 5 6 import org.junit.runner.Runner; 7 import org.junit.runners.model.RunnerBuilder; 8 9 public class AllDefaultPossibilitiesBuilder extends RunnerBuilder { 10 private final boolean canUseSuiteMethod; 11 12 public AllDefaultPossibilitiesBuilder(boolean canUseSuiteMethod) { 13 this.canUseSuiteMethod = canUseSuiteMethod; 14 } 15 16 @Override 17 public Runner runnerForClass(Class<?> testClass) throws Throwable { 18 List<RunnerBuilder> builders = Arrays.asList( 19 ignoredBuilder(), 20 annotatedBuilder(), 21 suiteMethodBuilder(), 22 junit3Builder(), 23 junit4Builder()); 24 25 for (RunnerBuilder each : builders) { 26 Runner runner = each.safeRunnerForClass(testClass); 27 if (runner != null) { 28 return runner; 29 } 30 } 31 return null; 32 } 33 34 protected JUnit4Builder junit4Builder() { 35 return new JUnit4Builder(); 36 } 37 38 protected JUnit3Builder junit3Builder() { 39 return new JUnit3Builder(); 40 } 41 42 protected AnnotatedBuilder annotatedBuilder() { 43 return new AnnotatedBuilder(this); 44 } 45 46 protected IgnoredBuilder ignoredBuilder() { 47 return new IgnoredBuilder(); 48 } 49 50 protected RunnerBuilder suiteMethodBuilder() { 51 if (canUseSuiteMethod) { 52 return new SuiteMethodBuilder(); 53 } 54 return new NullBuilder(); 55 } 56 }