org.junit.rules

## Class Timeout

- java.lang.Object
- - org.junit.rules.Timeout

- All Implemented Interfaces:
    TestRule

      public class Timeout
      extends Object
      implements TestRule

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

  Since:
    4.7

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Timeout(int millis)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Statement` | `apply(Statement base, Description description)` Modifies the method-running `Statement` to implement this test-running rule.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Timeout

          public Timeout(int millis)

      Parameters:
        `millis` - the millisecond timeout

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