001 package org.junit.rules; 002 003 import org.junit.runner.Description; 004 import org.junit.runners.model.Statement; 005 006 /** 007 * Verifier is a base class for Rules like ErrorCollector, which can turn 008 * otherwise passing test methods into failing tests if a verification check is 009 * failed 010 * 011 * <pre> 012 * public static class ErrorLogVerifier { 013 * private ErrorLog errorLog = new ErrorLog(); 014 * 015 * @Rule 016 * public Verifier verifier = new Verifier() { 017 * @Override public void verify() { 018 * assertTrue(errorLog.isEmpty()); 019 * } 020 * } 021 * 022 * @Test public void testThatMightWriteErrorLog() { 023 * // ... 024 * } 025 * } 026 * </pre> 027 * 028 * @since 4.7 029 */ 030 public abstract class Verifier implements TestRule { 031 public Statement apply(final Statement base, Description description) { 032 return new Statement() { 033 @Override 034 public void evaluate() throws Throwable { 035 base.evaluate(); 036 verify(); 037 } 038 }; 039 } 040 041 /** 042 * Override this to add verification logic. Overrides should throw an 043 * exception to indicate that verification failed. 044 */ 045 protected void verify() throws Throwable { 046 } 047 }