【测试之道】深刻探索:单元测试之测试执行顺序

测试执行顺序

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

  • @FixMethodOrder(MethodSorters.JVM) :这样就是按照JVM返回的顺序留下测试方法。此Order可能因运行而异(机器不一样可能有差别)
  • **@FixMethodOrder(MethodSorters.NAME_ASCENDING) ** :按各类测试方法的方法的名称,在字典序(按测试方法的字母来)。

举例

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
  • 不管我把A B C 这三个方法如何打乱,都是这个结果,按字母升序来执行。
  • 若是是按JVM来,你多执行几回,就发现会有很大的随机性。
  • 若是是默认方法,那么顺序是能够肯定的,可是执行过程就是不能够预见的。
相关文章
相关标签/搜索