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