Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.junit.runners
Class BlockJUnit4ClassRunner

    java.lang.Object
      org.junit.runner.Runner
          org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>
              org.junit.runners.BlockJUnit4ClassRunner

All Implemented Interfaces:
  Describable, Filterable, Sortable

Direct Known Subclasses:
  JUnit4

    public class BlockJUnit4ClassRunner

extends ParentRunner<org.junit.runners.model.FrameworkMethod>
implements Filterable, Sortable

Implements the JUnit 4 standard test case class model, as defined by the annotations in the org.junit package. Many users will never notice this class: it is now the default test class runner, but it should have exactly the same behavior as the old test class runner (`JUnit4ClassRunner`). BlockJUnit4ClassRunner has advantages for writers of custom JUnit runners that are slight changes to the default behavior, however:

- It has a much simpler implementation based on `Statement`s, allowing new operations to be inserted into the appropriate point in the execution flow.
- It is published, and extension and reuse are encouraged, whereas `JUnit4ClassRunner` was in an internal package, and is now deprecated.

Constructor Summary
`BlockJUnit4ClassRunner(java.lang.Class<?> klass)` Creates a BlockJUnit4ClassRunner to run `klass`

Method Summary
`protected void` | `collectInitializationErrors(java.util.List<java.lang.Throwable> errors)` Adds to `errors` a throwable for each problem noted with the test class (available from `ParentRunner.getTestClass()`).
`protected java.util.List<org.junit.runners.model.FrameworkMethod>` | `computeTestMethods()` Returns the methods that run tests.
`protected java.lang.Object` | `createTest()` Returns a new fixture for running a test.
`protected Description` | `describeChild(org.junit.runners.model.FrameworkMethod method)` Returns a `Description` for `child`, which can be assumed to be an element of the list returned by `ParentRunner.getChildren()`
`protected java.util.List<org.junit.runners.model.FrameworkMethod>` | `getChildren()` Returns a list of objects that define the children of this Runner.
`protected org.junit.runners.model.Statement` | `methodBlock(org.junit.runners.model.FrameworkMethod method)` Returns a Statement that, when executed, either returns normally if `method` passes, or throws an exception if `method` fails.
`protected org.junit.runners.model.Statement` | `methodInvoker(org.junit.runners.model.FrameworkMethod method, java.lang.Object test)` Returns a `Statement` that invokes `method` on `test`
`protected org.junit.runners.model.Statement` | `possiblyExpectingExceptions(org.junit.runners.model.FrameworkMethod method, java.lang.Object test, org.junit.runners.model.Statement next)` Returns a `Statement`: if `method`'s `@Test` annotation has the `expecting` attribute, return normally only if `next` throws an exception of the correct type, and throw an exception otherwise.
`protected void` | `runChild(org.junit.runners.model.FrameworkMethod method, RunNotifier notifier)` Runs the test corresponding to `child`, which can be assumed to be an element of the list returned by `ParentRunner.getChildren()`.
`protected java.lang.String` | `testName(org.junit.runners.model.FrameworkMethod method)` Returns the name that describes `method` for `Description`s.
`protected void` | `validateInstanceMethods(java.util.List<java.lang.Throwable> errors)` Adds to `errors` for each method annotated with `@Test`, `@Before`, or `@After` that is not a public, void instance method with no arguments.
`protected void` | `validateTestMethods(java.util.List<java.lang.Throwable> errors)` Adds to `errors` for each method annotated with `@Test`that is not a public, void instance method with no arguments.
`protected void` | `validateZeroArgConstructor(java.util.List<java.lang.Throwable> errors)` Adds to `errors` if the test class's single constructor takes parameters
`protected org.junit.runners.model.Statement` | `withAfters(org.junit.runners.model.FrameworkMethod method, java.lang.Object target, org.junit.runners.model.Statement statement)` Returns a `Statement`: run all non-overridden `@After` methods on this class and superclasses before running `next`; all After methods are always executed: exceptions thrown by previous steps are combined, if necessary, with exceptions from After methods into a `MultipleFailureException`.
`protected org.junit.runners.model.Statement` | `withBefores(org.junit.runners.model.FrameworkMethod method, java.lang.Object target, org.junit.runners.model.Statement statement)` Returns a `Statement`: run all non-overridden `@Before` methods on this class and superclasses before running `next`; if any throws an Exception, stop execution and pass the exception on.
`protected org.junit.runners.model.Statement` | `withPotentialTimeout(org.junit.runners.model.FrameworkMethod method, java.lang.Object test, org.junit.runners.model.Statement next)` Returns a `Statement`: if `method`'s `@Test` annotation has the `timeout` attribute, throw an exception if `next` takes more than the specified number of milliseconds.

Methods inherited from class org.junit.runners.ParentRunner
`childrenInvoker, classBlock, filter, getDescription, getName, getTestClass, run, 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`

Methods inherited from interface org.junit.runner.manipulation.Filterable
`filter`

Methods inherited from interface org.junit.runner.manipulation.Sortable
`sort`

Constructor Detail

### BlockJUnit4ClassRunner

    public BlockJUnit4ClassRunner(java.lang.Class<?> klass)
                           throws org.junit.runners.model.InitializationError

  Creates a BlockJUnit4ClassRunner to run `klass`

  Throws:
    `org.junit.runners.model.InitializationError` - if the test class is malformed.

Method Detail

### runChild

    protected void runChild(org.junit.runners.model.FrameworkMethod method,
                            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<org.junit.runners.model.FrameworkMethod>`

### describeChild

    protected Description describeChild(org.junit.runners.model.FrameworkMethod method)

  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<org.junit.runners.model.FrameworkMethod>`

### getChildren

    protected java.util.List<org.junit.runners.model.FrameworkMethod> getChildren()

  Description copied from class: `ParentRunner`
  Returns a list of objects that define the children of this Runner.

  Specified by:
    `getChildren` in class `ParentRunner<org.junit.runners.model.FrameworkMethod>`

### computeTestMethods

    protected java.util.List<org.junit.runners.model.FrameworkMethod> computeTestMethods()

  Returns the methods that run tests. Default implementation returns all methods annotated with `@Test` on this class and superclasses that are not overridden.

### collectInitializationErrors

    protected void collectInitializationErrors(java.util.List<java.lang.Throwable> errors)

  Description copied from class: `ParentRunner`
  Adds to `errors` a throwable for each problem noted with the test class (available from `ParentRunner.getTestClass()`). Default implementation adds an error for each method annotated with `@BeforeClass` or `@AfterClass` that is not `public static void` with no arguments.

  Overrides:
    `collectInitializationErrors` in class `ParentRunner<org.junit.runners.model.FrameworkMethod>`

### validateZeroArgConstructor

    protected void validateZeroArgConstructor(java.util.List<java.lang.Throwable> errors)

  Adds to `errors` if the test class's single constructor takes parameters

### validateInstanceMethods

    protected void validateInstanceMethods(java.util.List<java.lang.Throwable> errors)

  Adds to `errors` for each method annotated with `@Test`, `@Before`, or `@After` that is not a public, void instance method with no arguments.

### validateTestMethods

    protected void validateTestMethods(java.util.List<java.lang.Throwable> errors)

  Adds to `errors` for each method annotated with `@Test`that is not a public, void instance method with no arguments.

### createTest

    protected java.lang.Object createTest()
                                   throws java.lang.Exception

  Returns a new fixture for running a test. Default implementation executes the test class's no-argument constructor (validation should have ensured one exists).

  Throws:
    `java.lang.Exception`

### testName

    protected java.lang.String testName(org.junit.runners.model.FrameworkMethod method)

  Returns the name that describes `method` for `Description`s. Default implementation is the method's name

### methodBlock

    protected org.junit.runners.model.Statement methodBlock(org.junit.runners.model.FrameworkMethod method)

  Returns a Statement that, when executed, either returns normally if `method` passes, or throws an exception if `method` fails. Here is an outline of the default implementation:
  - Invoke `method` on the result of `createTest()`, and throw any exceptions thrown by either operation.
  - HOWEVER, if `method`'s `@Test` annotation has the `expecting` attribute, return normally only if the previous step threw an exception of the correct type, and throw an exception otherwise.
  - HOWEVER, if `method`'s `@Test` annotation has the `timeout` attribute, throw an exception if the previous step takes more than the specified number of milliseconds.
  - ALWAYS run all non-overridden `@Before` methods on this class and superclasses before any of the previous steps; if any throws an Exception, stop execution and pass the exception on.
  - ALWAYS run all non-overridden `@After` methods on this class and superclasses before any of the previous steps; all After methods are always executed: exceptions thrown by previous steps are combined, if necessary, with exceptions from After methods into a `MultipleFailureException`.
  This can be overridden in subclasses, either by overriding this method, or the implementations creating each sub-statement.

### methodInvoker

    protected org.junit.runners.model.Statement methodInvoker(org.junit.runners.model.FrameworkMethod method,
                                                              java.lang.Object test)

  Returns a `Statement` that invokes `method` on `test`

### possiblyExpectingExceptions

    protected org.junit.runners.model.Statement possiblyExpectingExceptions(org.junit.runners.model.FrameworkMethod method,
                                                                            java.lang.Object test,
                                                                            org.junit.runners.model.Statement next)

  Returns a `Statement`: if `method`'s `@Test` annotation has the `expecting` attribute, return normally only if `next` throws an exception of the correct type, and throw an exception otherwise.

### withPotentialTimeout

    protected org.junit.runners.model.Statement withPotentialTimeout(org.junit.runners.model.FrameworkMethod method,
                                                                     java.lang.Object test,
                                                                     org.junit.runners.model.Statement next)

  Returns a `Statement`: if `method`'s `@Test` annotation has the `timeout` attribute, throw an exception if `next` takes more than the specified number of milliseconds.

### withBefores

    protected org.junit.runners.model.Statement withBefores(org.junit.runners.model.FrameworkMethod method,
                                                            java.lang.Object target,
                                                            org.junit.runners.model.Statement statement)

  Returns a `Statement`: run all non-overridden `@Before` methods on this class and superclasses before running `next`; if any throws an Exception, stop execution and pass the exception on.

### withAfters

    protected org.junit.runners.model.Statement withAfters(org.junit.runners.model.FrameworkMethod method,
                                                           java.lang.Object target,
                                                           org.junit.runners.model.Statement statement)

  Returns a `Statement`: run all non-overridden `@After` methods on this class and superclasses before running `next`; all After methods are always executed: exceptions thrown by previous steps are combined, if necessary, with exceptions from After methods into a `MultipleFailureException`.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD