001    package org.junit.runners;
002    
003    import java.lang.reflect.Method;
004    import java.util.Comparator;
005    
006    import org.junit.internal.MethodSorter;
007    
008    /**
009     * Sort the methods into a specified execution order.
010     * Defines common {@link MethodSorter} implementations.
011     *
012     * @since 4.11
013     */
014    public enum MethodSorters {
015        /**
016         * Sorts the test methods by the method name, in lexicographic order,
017         * with {@link Method#toString()} used as a tiebreaker
018         */
019        NAME_ASCENDING(MethodSorter.NAME_ASCENDING),
020    
021        /**
022         * Leaves the test methods in the order returned by the JVM.
023         * Note that the order from the JVM may vary from run to run
024         */
025        JVM(null),
026    
027        /**
028         * Sorts the test methods in a deterministic, but not predictable, order
029         */
030        DEFAULT(MethodSorter.DEFAULT);
031    
032        private final Comparator<Method> comparator;
033    
034        private MethodSorters(Comparator<Method> comparator) {
035            this.comparator = comparator;
036        }
037    
038        public Comparator<Method> getComparator() {
039            return comparator;
040        }
041    }