001package org.junit.runners;
002
003import java.lang.reflect.Method;
004import java.util.Comparator;
005
006import 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 */
014public 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}