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 extends Throwable> 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;
}