## org.junit.rules
Class TestWatcher

    java.lang.Object
      org.junit.rules.TestWatcher

All Implemented Interfaces:
  TestRule

Direct Known Subclasses:
  TestName

    public abstract class TestWatcher

extends Object
implements TestRule

TestWatcher is a base class for Rules that take note of the testing action, without modifying it. For example, this class will keep a log of each passing and failing test:

     public static class WatchmanTest {
      private static String watchedLog;

      @Rule(order = Integer.MIN_VALUE)
      public TestWatcher watchman= new TestWatcher() {
          @Override
          protected void failed(Throwable e, Description description) {
              watchedLog+= description + "\n";
          }

          @Override
          protected void succeeded(Description description) {
              watchedLog+= description + " " + "success!\n";
             }
         };

      @Test
      public void fails() {
          fail();
      }

      @Test
      public void succeeds() {
         }
     }

It is recommended to always set the `order` of the `TestWatcher` to `Integer.MIN_VALUE` so that it encloses all other rules. Otherwise it may see failed tests as successful and vice versa if some rule changes the result of a test (e.g. `ErrorCollector` or `ExpectedException`).

Since:
  4.9

Constructor Summary
`TestWatcher()`

Method Summary
`Statement` `apply(Statement base, Description description)` Modifies the method-running `Statement` to implement this test-running rule.
`protected void` `failed(Throwable e, Description description)` Invoked when a test fails
`protected void` `finished(Description description)` Invoked when a test method finishes (whether passing or failing)
`protected void` `skipped(AssumptionViolatedException e, Description description)` Invoked when a test is skipped due to a failed assumption.
`protected void` `skipped(org.junit.internal.AssumptionViolatedException e, Description description)` Deprecated. use `skipped(AssumptionViolatedException, Description)`
`protected void` `starting(Description description)` Invoked when a test is about to start
`protected void` `succeeded(Description description)` Invoked when a test succeeds

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TestWatcher

    public TestWatcher()

Method Detail

### apply

    public Statement apply(Statement base,
                           Description description)

  Description copied from interface: `TestRule`
  Modifies the method-running `Statement` to implement this test-running rule.

  Specified by:
    `apply` in interface `TestRule`
  Parameters:
    `base` - The `Statement` to be modified
    `description` - A `Description` of the test implemented in `base`
  Returns:
    a new statement, which may be the same as `base`, a wrapper around `base`, or a completely new Statement.

### succeeded

    protected void succeeded(Description description)

  Invoked when a test succeeds

### failed

    protected void failed(Throwable e,
                          Description description)

  Invoked when a test fails

### skipped

    protected void skipped(AssumptionViolatedException e,
                           Description description)

  Invoked when a test is skipped due to a failed assumption.

### skipped

    @Deprecated
    protected void skipped(org.junit.internal.AssumptionViolatedException e,
                                      Description description)

  Deprecated. use `skipped(AssumptionViolatedException, Description)`

  Invoked when a test is skipped due to a failed assumption.

### starting

    protected void starting(Description description)

  Invoked when a test is about to start

### finished

    protected void finished(Description description)

  Invoked when a test method finishes (whether passing or failing)

Copyright © 2002–2020 JUnit. All rights reserved.