Class 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
    • 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.