Class RunnerBuilder


  • public abstract class RunnerBuilder
    extends java.lang.Object
    A RunnerBuilder is a strategy for constructing runners for classes. Only writers of custom runners should use RunnerBuilders. A custom runner class with a constructor taking a RunnerBuilder parameter will be passed the instance of RunnerBuilder 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
    • Constructor Summary

      Constructors 
      Constructor Description
      RunnerBuilder()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract Runner runnerForClass​(java.lang.Class<?> testClass)
      Override to calculate the correct runner for a test class at runtime.
      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 in children.
      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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 return null from this method.

        Parameters:
        testClass - class to be run
        Returns:
        a Runner
      • runners

        public java.util.List<Runnerrunners​(java.lang.Class<?> parent,
                                              java.lang.Class<?>[] children)
                                       throws InitializationError
        Constructs and returns a list of Runners, one for each child class in children. Care is taken to avoid infinite recursion: this builder will throw an exception if it is requested for another runner for parent before this call completes.
        Throws:
        InitializationError