Class TestWatcher

java.lang.Object
org.junit.rules.TestWatcher
All Implemented Interfaces:
TestRule
Direct Known Subclasses:
Stopwatch.InternalWatcher, 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