org.junit

## Annotation Type Test

-     @Retention(value=RUNTIME)
      @Target(value=METHOD)
      public @interface Test

  The `Test` annotation tells JUnit that the `public void` method to which it is attached can be run as a test case. To run the method, JUnit first constructs a fresh instance of the class then invokes the annotated method. Any exceptions thrown by the test will be reported by JUnit as a failure. If no exceptions are thrown, the test is assumed to have succeeded.

  A simple test looks like this:

       public class Example {
          @Test
          public void method() {
             org.junit.Assert.assertTrue( new ArrayList().isEmpty() );
          }
       }

  The `Test` annotation supports two optional parameters. The first, `expected`, declares that a test method should throw an exception. If it doesn't throw an exception or if it throws a different exception than the one declared, the test fails. For example, the following test succeeds:

          @Test(expected=IndexOutOfBoundsException.class) public void outOfBounds() {
             new ArrayList<Object>().get(1);
          }

  The second optional parameter, `timeout`, causes a test to fail if it takes longer than a specified amount of clock time (measured in milliseconds). The following test fails:

          @Test(timeout=100) public void infinity() {
             while(true);
          }

  Since:
    4.0

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `Class<? extends Throwable>` | `expected` Optionally specify `expected`, a Throwable, to cause a test method to succeed iff an exception of the specified class is thrown by the method.
    `long` | `timeout` Optionally specify `timeout` in milliseconds to cause a test method to fail if it takes longer than that number of milliseconds.

- - ### Element Detail

    - #### expected

          public abstract Class<? extends Throwable> expected

      Optionally specify `expected`, a Throwable, to cause a test method to succeed iff an exception of the specified class is thrown by the method.
      Default:
        org.junit.Test.None.class

    - #### timeout

          public abstract long timeout

      Optionally specify `timeout` in milliseconds to cause a test method to fail if it takes longer than that number of milliseconds.
      Default:
        0L