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)
private void
configureRunner(Runner runner)
(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 for the given test class.
-
-
-
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 for the given test class.In case of an exception a runner will be returned that prints an error instead of running tests.
Note that some of the internal JUnit implementations of RunnerBuilder will return
null
from this method, but no RunnerBuilder passed to a Runner constructor will returnnull
from this method.- Parameters:
testClass
- class to be run- Returns:
- a Runner
-
configureRunner
private void configureRunner(Runner runner) throws InvalidOrderingException
- Throws:
InvalidOrderingException
-
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)
-
-