package org.junit; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** *

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

*/ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Test { /** * Default empty exception */ static class None extends Throwable { private static final long serialVersionUID= 1L; private None() { } } /** * Optionally specify expected, a Throwable, to cause a test method to succeed iff * an exception of the specified class is thrown by the method. */ Class expected() default None.class; /** * Optionally specify timeout in milliseconds to cause a test method to fail if it * takes longer than that number of milliseconds.*/ long timeout() default 0L; }