Package org.junit.runners.model
Class RunnerBuilder
- java.lang.Object
-
- org.junit.runners.model.RunnerBuilder
-
- Direct Known Subclasses:
AllDefaultPossibilitiesBuilder
,AnnotatedBuilder
,IgnoredBuilder
,JUnit3Builder
,JUnit4Builder
,NullBuilder
,SuiteMethodBuilder
public abstract class RunnerBuilder extends java.lang.Object
A RunnerBuilder is a strategy for constructing runners for classes. Only writers of custom runners should useRunnerBuilder
s. A custom runner class with a constructor taking aRunnerBuilder
parameter will be passed the instance ofRunnerBuilder
used to build that runner itself. For example, imagine a custom runner that builds suites based on a list of classes in a text file:\@RunWith(TextFileSuite.class) \@SuiteSpecFile("mysuite.txt") class MySuite {}
The implementation of TextFileSuite might include:public TextFileSuite(Class testClass, RunnerBuilder builder) { // ... for (String className : readClassNames()) addRunner(builder.runnerForClass(Class.forName(className))); // ... }
- Since:
- 4.5
- See Also:
Suite
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<java.lang.Class<?>>
parents
-
Constructor Summary
Constructors Constructor Description RunnerBuilder()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description (package private) java.lang.Class<?>
addParent(java.lang.Class<?> parent)
(package private) void
removeParent(java.lang.Class<?> klass)
abstract Runner
runnerForClass(java.lang.Class<?> testClass)
Override to calculate the correct runner for a test class at runtime.private java.util.List<Runner>
runners(java.lang.Class<?>[] children)
java.util.List<Runner>
runners(java.lang.Class<?> parent, java.lang.Class<?>[] children)
Constructs and returns a list of Runners, one for each child class inchildren
.java.util.List<Runner>
runners(java.lang.Class<?> parent, java.util.List<java.lang.Class<?>> children)
Runner
safeRunnerForClass(java.lang.Class<?> testClass)
Always returns a runner, even if it is just one that prints an error instead of running tests.
-
-
-
Method Detail
-
runnerForClass
public abstract Runner runnerForClass(java.lang.Class<?> testClass) throws java.lang.Throwable
Override to calculate the correct runner for a test class at runtime.- Parameters:
testClass
- class to be run- Returns:
- a Runner
- Throws:
java.lang.Throwable
- if a runner cannot be constructed
-
safeRunnerForClass
public Runner safeRunnerForClass(java.lang.Class<?> testClass)
Always returns a runner, even if it is just one that prints an error instead of running tests.- Parameters:
testClass
- class to be run- Returns:
- a Runner
-
addParent
java.lang.Class<?> addParent(java.lang.Class<?> parent) throws InitializationError
- Throws:
InitializationError
-
removeParent
void removeParent(java.lang.Class<?> klass)
-
runners
public java.util.List<Runner> runners(java.lang.Class<?> parent, java.lang.Class<?>[] children) throws InitializationError
Constructs and returns a list of Runners, one for each child class inchildren
. Care is taken to avoid infinite recursion: this builder will throw an exception if it is requested for another runner forparent
before this call completes.- Throws:
InitializationError
-
runners
public java.util.List<Runner> runners(java.lang.Class<?> parent, java.util.List<java.lang.Class<?>> children) throws InitializationError
- Throws:
InitializationError
-
runners
private java.util.List<Runner> runners(java.lang.Class<?>[] children)
-
-