# Package org.junit.rules

- Interface Summary
  Interface | Description
  --- | ---
  MethodRule | A MethodRule is an alteration in how a test method is run and reported.
  TestRule | A TestRule is an alteration in how a test method, or set of test methods, is run and reported.

- Class Summary
  Class | Description
  --- | ---
  ErrorCollector | The ErrorCollector rule allows execution of a test to continue after the first problem is found (for example, to collect _all_ the incorrect rows in a table, and report them all at once): public static class UsesErrorCollectorTwice { @Rule public ErrorCollector collector= new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("first thing went wrong")); collector.addError(new Throwable("second thing went wrong")); collector.checkThat(getResult(), not(containsString("ERROR!
  ExpectedException | The ExpectedException rule allows in-test specification of expected exception types and messages: // These tests all pass.
  ExternalResource | A base class for Rules (like TemporaryFolder) that set up an external resource before a test (a file, socket, server, database connection, etc.), and guarantee to tear it down afterward: public static class UsesExternalResource { Server myServer= new Server(); @Rule public ExternalResource resource= new ExternalResource() { @Override protected void before() throws Throwable { myServer.connect(); }; @Override protected void after() { myServer.disconnect(); }; }; @Test public void testFoo() { new Client().run(myServer); } }
  RuleChain | The RuleChain rule allows ordering of TestRules.
  RunRules | Runs a collection of rules on a statement.
  TemporaryFolder | The TemporaryFolder Rule allows creation of files and folders that are guaranteed to be deleted when the test method finishes (whether it passes or fails): public static class HasTempFolder { @Rule public TemporaryFolder folder= new TemporaryFolder(); @Test public void testUsingTempFolder() throws IOException { File createdFile= folder.newFile("myfile.txt"); File createdFolder= folder.newFolder("subfolder"); // ... } }
  TestName | The TestName Rule makes the current test name available inside test methods: public class TestNameTest { @Rule public TestName name= new TestName(); @Test public void testA() { assertEquals("testA", name.getMethodName()); } @Test public void testB() { assertEquals("testB", name.getMethodName()); } }
  TestWatcher | TestWatcher is a base class for Rules that take note of the testing action, without modifying it.
  TestWatchman | Deprecated Use `TestWatcher` (which implements `TestRule`) instead.
  Timeout | The Timeout Rule applies the same timeout to all test methods in a class: public static class HasGlobalTimeout { public static String log; @Rule public Timeout globalTimeout= new Timeout(20); @Test public void testInfiniteLoop1() { log+= "ran1"; for (;;) { } } @Test public void testInfiniteLoop2() { log+= "ran2"; for (;;) { } } }
  Verifier | Verifier is a base class for Rules like ErrorCollector, which can turn otherwise passing test methods into failing tests if a verification check is failed public static class ErrorLogVerifier() { private ErrorLog errorLog = new ErrorLog(); @Rule public Verifier verifier = new Verifier() { @Override public void verify() { assertTrue(errorLog.isEmpty()); } } @Test public void testThatMightWriteErrorLog() { // ... } }