## org.junit.rules
Class ExternalResource

    java.lang.Object
      org.junit.rules.ExternalResource

All Implemented Interfaces:
  TestRule

Direct Known Subclasses:
  TemporaryFolder

    public abstract class ExternalResource

extends Object
implements TestRule

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);
         }
     }

Since:
  4.7

Constructor Summary
`ExternalResource()`

Method Summary
`protected void` `after()` Override to tear down your specific external resource.
`Statement` `apply(Statement base, Description description)` Modifies the method-running `Statement` to implement this test-running rule.
`protected void` `before()` Override to set up your specific external resource.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ExternalResource

    public ExternalResource()

Method Detail

### 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.

### before

    protected void before()
                   throws Throwable

  Override to set up your specific external resource.

  Throws:
    `Throwable` - if setup fails (which will disable `after`

### after

    protected void after()

  Override to tear down your specific external resource.

Copyright © 2002–2020 JUnit. All rights reserved.