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 Details

    • TestWatcher

      public TestWatcher()
  • Method Details

    • 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)
      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)