001    package org.junit.runner;
002    
003    import java.lang.annotation.ElementType;
004    import java.lang.annotation.Inherited;
005    import java.lang.annotation.Retention;
006    import java.lang.annotation.RetentionPolicy;
007    import java.lang.annotation.Target;
008    
009    import org.junit.runner.manipulation.Ordering;
010    
011    /**
012     * When a test class is annotated with <code>&#064;OrderWith</code> or extends a class annotated
013     * with <code>&#064;OrderWith</code>, JUnit will order the tests in the test class (and child
014     * test classes, if any) using the ordering defined by the {@link Ordering} class.
015     *
016     * @since 4.13
017     */
018    @Retention(RetentionPolicy.RUNTIME)
019    @Target(ElementType.TYPE)
020    @Inherited
021    public @interface OrderWith {
022        /**
023         * Gets a class that extends {@link Ordering}. The class must have a public no-arg constructor.
024         */
025        Class<? extends Ordering.Factory> value();
026    }