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 }