package org.junit.rules; import org.junit.internal.AssumptionViolatedException; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.Statement; /** * TestWatchman 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: * * <pre> * public static class WatchmanTest { * private static String watchedLog; * * @Rule * public MethodRule watchman= new TestWatchman() { * @Override * public void failed(Throwable e, FrameworkMethod method) { * watchedLog+= method.getName() + " " + e.getClass().getSimpleName() * + "\n"; * } * * @Override * public void succeeded(FrameworkMethod method) { * watchedLog+= method.getName() + " " + "success!\n"; * } * }; * * @Test * public void fails() { * fail(); * } * * @Test * public void succeeds() { * } * } * </pre> * * @since 4.7 * @deprecated Use {@link TestWatcher} (which implements {@link TestRule}) instead. */ @Deprecated public class TestWatchman implements MethodRule { public Statement apply(final Statement base, final FrameworkMethod method, Object target) { return new Statement() { @Override public void evaluate() throws Throwable { starting(method); try { base.evaluate(); succeeded(method); } catch (AssumptionViolatedException e) { throw e; } catch (Throwable t) { failed(t, method); throw t; } finally { finished(method); } } }; } /** * Invoked when a test method succeeds */ public void succeeded(FrameworkMethod method) { } /** * Invoked when a test method fails */ public void failed(Throwable e, FrameworkMethod method) { } /** * Invoked when a test method is about to start */ public void starting(FrameworkMethod method) { } /** * Invoked when a test method finishes (whether passing or failing) */ public void finished(FrameworkMethod method) { } }