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