    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    }