Suite (JUnit API)
Date: 2018-08-04

org.junit.runners

## Class Suite

- java.lang.Object
- - org.junit.runner.Runner
  - - org.junit.runners.ParentRunner<Runner>
    - - org.junit.runners.Suite

- All Implemented Interfaces:
    Describable, Filterable, Sortable
  Direct Known Subclasses:
    Categories, Enclosed, Parameterized

      public class Suite
      extends ParentRunner<Runner>

  Using `Suite` as a runner allows you to manually build a suite containing tests from many classes. It is the JUnit 4 equivalent of the JUnit 3.8.x static `Test` `suite()` method. To use it, annotate a class with `@RunWith(Suite.class)` and `@SuiteClasses({TestClass1.class, ...})`. When you run this class, it will run all the tests in all the suite classes.
  Since:
    4.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `Suite.SuiteClasses` The `SuiteClasses` annotation specifies the classes to be run when a class annotated with `@RunWith(Suite.class)` is run.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Suite(java.lang.Class<?> klass, java.lang.Class<?>[] suiteClasses)` Call this when the default builder is good enough.
    `protected` | `Suite(java.lang.Class<?> klass, java.util.List<Runner> runners)` Called by this class and subclasses once the runners making up the suite have been determined
    `` | `Suite(java.lang.Class<?> klass, RunnerBuilder builder)` Called reflectively on classes annotated with `@RunWith(Suite.class)`
    `` | `Suite(RunnerBuilder builder, java.lang.Class<?>[] classes)` Call this when there is no single root class (for example, multiple class names passed on the command line to `JUnitCore`
    `protected` | `Suite(RunnerBuilder builder, java.lang.Class<?> klass, java.lang.Class<?>[] suiteClasses)` Called by this class and subclasses once the classes making up the suite have been determined

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Description` | `describeChild(Runner child)` Returns a `Description` for `child`, which can be assumed to be an element of the list returned by `ParentRunner.getChildren()`
    `static Runner` | `emptySuite()` Returns an empty suite.
    `protected java.util.List<Runner>` | `getChildren()` Returns a list of objects that define the children of this Runner.
    `protected void` | `runChild(Runner runner, RunNotifier notifier)` Runs the test corresponding to `child`, which can be assumed to be an element of the list returned by `ParentRunner.getChildren()`.

    - ### Methods inherited from class org.junit.runners.ParentRunner

      `childrenInvoker, classBlock, classRules, collectInitializationErrors, createTestClass, filter, getDescription, getName, getRunnerAnnotations, getTestClass, isIgnored, run, runLeaf, setScheduler, sort, validatePublicVoidNoArgMethods, withAfterClasses, withBeforeClasses`

    - ### Methods inherited from class org.junit.runner.Runner

      `testCount`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Suite

          public Suite(java.lang.Class<?> klass,
               RunnerBuilder builder)
                throws InitializationError

      Called reflectively on classes annotated with `@RunWith(Suite.class)`
      Parameters:
        `klass` - the root class
        `builder` - builds runners for classes in the suite
      Throws:
        `InitializationError`

    - #### Suite

          public Suite(RunnerBuilder builder,
               java.lang.Class<?>[] classes)
                throws InitializationError

      Call this when there is no single root class (for example, multiple class names passed on the command line to `JUnitCore`
      Parameters:
        `builder` - builds runners for classes in the suite
        `classes` - the classes in the suite
      Throws:
        `InitializationError`

    - #### Suite

          protected Suite(java.lang.Class<?> klass,
               java.lang.Class<?>[] suiteClasses)
                   throws InitializationError

      Call this when the default builder is good enough. Left in for compatibility with JUnit 4.4.
      Parameters:
        `klass` - the root of the suite
        `suiteClasses` - the classes in the suite
      Throws:
        `InitializationError`

    - #### Suite

          protected Suite(RunnerBuilder builder,
               java.lang.Class<?> klass,
               java.lang.Class<?>[] suiteClasses)
                   throws InitializationError

      Called by this class and subclasses once the classes making up the suite have been determined
      Parameters:
        `builder` - builds runners for classes in the suite
        `klass` - the root of the suite
        `suiteClasses` - the classes in the suite
      Throws:
        `InitializationError`

    - #### Suite

          protected Suite(java.lang.Class<?> klass,
               java.util.List<Runner> runners)
                   throws InitializationError

      Called by this class and subclasses once the runners making up the suite have been determined
      Parameters:
        `klass` - root of the suite
        `runners` - for each class in the suite, a `Runner`
      Throws:
        `InitializationError`

  - ### Method Detail

    - #### emptySuite

          public static Runner emptySuite()

      Returns an empty suite.

    - #### getChildren

          protected java.util.List<Runner> getChildren()

      Description copied from class: `ParentRunner`
      Returns a list of objects that define the children of this Runner.
      Specified by:
        `getChildren` in class `ParentRunner<Runner>`

    - #### describeChild

          protected Description describeChild(Runner child)

      Description copied from class: `ParentRunner`
      Returns a `Description` for `child`, which can be assumed to be an element of the list returned by `ParentRunner.getChildren()`
      Specified by:
        `describeChild` in class `ParentRunner<Runner>`

    - #### runChild

          protected void runChild(Runner runner,
                      RunNotifier notifier)

      Description copied from class: `ParentRunner`
      Runs the test corresponding to `child`, which can be assumed to be an element of the list returned by `ParentRunner.getChildren()`. Subclasses are responsible for making sure that relevant test events are reported through `notifier`
      Specified by:
        `runChild` in class `ParentRunner<Runner>`