AllDefaultPossibilitiesBuilder.java revision b3823db9f1192d8c81345740b3e65bd6738ba55b
1/**
2 *
3 */
4package org.junit.internal.builders;
5
6import java.util.Arrays;
7import java.util.List;
8
9import org.junit.runner.Runner;
10import org.junit.runners.model.RunnerBuilder;
11
12public 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}