Class TestWatcher

  • All Implemented Interfaces:
    TestRule
    Direct Known Subclasses:
    TestName

    public abstract class TestWatcher
    extends java.lang.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