1 package org.junit;
2
3 import java.lang.annotation.ElementType;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6 import java.lang.annotation.Target;
7
8 import org.junit.runners.MethodSorters;
9
10 /**
11 * This class allows the user to choose the order of execution of the methods within a test class.
12 *
13 * <p>The default order of execution of JUnit tests within a class is deterministic but not predictable.
14 * The order of execution is not guaranteed for Java 7 (and some previous versions), and can even change
15 * from run to run, so the order of execution was changed to be deterministic (in JUnit 4.11)
16 *
17 * <p>It is recommended that test methods be written so that they are independent of the order that they are executed.
18 * However, there may be a number of dependent tests either through error or by design.
19 * This class allows the user to specify the order of execution of test methods.
20 *
21 * <p>For possibilities, see {@link MethodSorters}
22 *
23 * Here is an example:
24 *
25 * <pre>
26 * @FixMethodOrder(MethodSorters.NAME_ASCENDING)
27 * public class MyTest {
28 * }
29 * </pre>
30 *
31 * @see org.junit.runners.MethodSorters
32 * @since 4.11
33 */
34 @Retention(RetentionPolicy.RUNTIME)
35 @Target({ElementType.TYPE})
36 public @interface FixMethodOrder {
37 /**
38 * Optionally specify <code>value</code> to have the methods executed in a particular order
39 */
40 MethodSorters value() default MethodSorters.DEFAULT;
41 }