001    package org.junit;
002    
003    import java.lang.annotation.ElementType;
004    import java.lang.annotation.Retention;
005    import java.lang.annotation.RetentionPolicy;
006    import java.lang.annotation.Target;
007    
008    import org.junit.runners.MethodSorters;
009    
010    /**
011     * This class allows the user to choose the order of execution of the methods within a test class.
012     *
013     * <p>The default order of execution of JUnit tests within a class is deterministic but not predictable.
014     * The order of execution is not guaranteed for Java 7 (and some previous versions), and can even change
015     * from run to run, so the order of execution was changed to be deterministic (in JUnit 4.11)
016     *
017     * <p>It is recommended that test methods be written so that they are independent of the order that they are executed.
018     * However, there may be a number of dependent tests either through error or by design.
019     * This class allows the user to specify the order of execution of test methods.
020     *
021     * <p>For possibilities, see {@link MethodSorters}
022     *
023     * Here is an example:
024     *
025     * <pre>
026     * &#064;FixMethodOrder(MethodSorters.NAME_ASCENDING)
027     * public class MyTest {
028     * }
029     * </pre>
030     *
031     * @see org.junit.runners.MethodSorters
032     * @since 4.11
033     */
034    @Retention(RetentionPolicy.RUNTIME)
035    @Target({ElementType.TYPE})
036    public @interface FixMethodOrder {
037        /**
038         * Optionally specify <code>value</code> to have the methods executed in a particular order
039         */
040        MethodSorters value() default MethodSorters.DEFAULT;
041    }