因为设计缘由,JUnit不会特别指定测试方法调用的执行顺序。到目前为止,这些方法只是按照反射API返回的顺序调用的。然而,使用JVM 的指令顺序返回是一种不太明智的作法。由于JVM平台也是没有指定任何特定的顺序,其实JDK 返回或多或少是有点随机性的。固然,一个好的测试方法是不会假设有任何的顺序的,可是,有些时候,咱们对业务测试会有这样的需求的,不能随机而来。毕竟,可预见的故障比某些平台上的随机故障要好,随机意味着故障将有很大的不肯定和难排查性。 从JUnit4.11 开始,JUnit将默认使用一个肯定性的,但不可预测的顺序。(MethodSorters.DEFAULT), 改变测试方法的执行顺序,只须要用**@FixMethodOrder** 注解到你的测试类中,以及一个可用的测试方法排序方式就好, 如:测试
import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestMethodOrder { @Test public void testA() { System.out.println("first"); } @Test public void testB() { System.out.println("second"); } @Test public void testC() { System.out.println("third"); } }
执行结果:设计
first second third