Class 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 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
    • 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 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, even if it is just one that prints an error instead of running tests.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • parents

        private final java.util.Set<java.lang.Class<?>> parents
    • Constructor Detail

      • RunnerBuilder

        public RunnerBuilder()
    • 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
      • 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 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
      • runners

        private java.util.List<Runner> runners​(java.lang.Class<?>[] children)