package org.junit;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* The <code>Test</code> annotation tells JUnit that the <code>public void</code> 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.
* <p>
* A simple test looks like this:<br>
* <code>
* public class Example {<br>
* @Test public void method() {<br>
* System.out.println("Hello");<br>
* }<br>
* }
* </code>
* <p>
* The <code>Test</code> annotation supports two optional parameters.
* The first, <code>expected</code>, 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: <br>
* <code>
* @Test(<b>expected=IndexOutOfBoundsException.class</b>) public void outOfBounds() {<br>
* new ArrayList<Object>().get(1);<br>
* }<br>
* </code>
* <p>
* The second optional parameter, <code>timeout</code>, causes a test to fail if it takes longer than a specified
* amount of clock time (measured in milliseconds). The following test fails:<br>
* <code>
* @Test(<b>timeout=100</b>) public void infinity() {<br>
* for(;;);<br>
* }<br>
* </code>
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
static class None extends Throwable {
private static final long serialVersionUID= 1L;
private None() {
}
}
/**
* Optionally specify <code>expected</code>, a Throwable, to cause a test method to succeed iff
* an exception of the specified class is thrown by the method.
*/
Class<? extends Throwable> expected() default None.class;
/**
* Optionally specify <code>timeout</code> in milliseconds to cause a test method to fail if it
* takes longer than that number of milliseconds.*/
long timeout() default 0L;
}