diff options
Diffstat (limited to 'src/org/junit/Test.java')
-rw-r--r-- | src/org/junit/Test.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/org/junit/Test.java b/src/org/junit/Test.java new file mode 100644 index 0000000..23dc78a --- /dev/null +++ b/src/org/junit/Test.java @@ -0,0 +1,68 @@ +package org.junit; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * <p>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> + * + * <p>A simple test looks like this: + * <pre> + * public class Example { + * <b>@Test</b> + * public void method() { + * org.junit.Assert.assertTrue( new ArrayList().isEmpty() ); + * } + * } + * </pre> + * </p> + * + * <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: + * <pre> + * @Test(<b>expected=IndexOutOfBoundsException.class</b>) public void outOfBounds() { + * new ArrayList<Object>().get(1); + * } + * </pre></p> + * + * <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: + * <pre> + * @Test(<b>timeout=100</b>) public void infinity() { + * while(true); + * } + * </pre></p> + */ +@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 <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; +} |