MethodRule (JUnit API)
Date: 2016-08-24

org.junit.rules

## Interface MethodRule

- All Known Implementing Classes:
    TestWatchman

      public interface MethodRule

  A MethodRule is an alteration in how a test method is run and reported. Multiple `MethodRule`s can be applied to a test method. The `Statement` that executes the method is passed to each annotated `Rule` in turn, and each may return a substitute or modified `Statement`, which is passed to the next `Rule`, if any. For examples of how this can be useful, see these provided MethodRules, or write your own:
  - `ErrorCollector`: collect multiple errors in one test method
  - `ExpectedException`: make flexible assertions about thrown exceptions
  - `ExternalResource`: start and stop a server, for example
  - `TemporaryFolder`: create fresh files, and delete after test
  - `TestName`: remember the test name for use during the method
  - `TestWatchman`: add logic at events during method execution
  - `Timeout`: cause test to fail after a set time
  - `Verifier`: fail test if object state ends up incorrect
  Note that `MethodRule` has been replaced by `TestRule`, which has the added benefit of supporting class rules.
  Since:
    4.7

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `Statement` | `apply(Statement base, FrameworkMethod method, Object target)` Modifies the method-running `Statement` to implement an additional test-running rule.

- - ### Method Detail

    - #### apply

          Statement apply(Statement base,
                          FrameworkMethod method,
                          Object target)

      Modifies the method-running `Statement` to implement an additional test-running rule.
      Parameters:
        `base` - The `Statement` to be modified
        `method` - The method to be run
        `target` - The object on with the method will be run.
      Returns:
        a new statement, which may be the same as `base`, a wrapper around `base`, or a completely new Statement.