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 * @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 }