默认订单

使用注释 - @FixMethodOrder(MethodSorters.DEFAULT)。这将以确定性和可预测的顺序运行类中的所有测试。实现哈希方法名称并比较它们。在平局的场景中,它按字典顺序排序。

下面的代码段取自 JUnit Github - MethodSorter.java

public int compare(Method m1, Method m2) {
    int i1 = m1.getName().hashCode();
    int i2 = m2.getName().hashCode();
    if(i1 != i2) {
        return i1 < i2 ? -1 : 1;
    }
    return NAME_ASCENDING.compare(m1,m2);
}

@FixMethodOrder(MethodSorters.DEFAULT)
public class OrderedTest {
    @Test
    public void testA() {}

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

假设 testAtestBtestC 的哈希值分别为 3,2 和 1。然后执行顺序是

  1. TESTC
  2. TESTB
  3. 种皮

假设所有测试的哈希都是相同的。由于所有哈希值都相同,因此执行顺序基于词典顺序。执行顺序是

  1. 种皮
  2. TESTB
  3. TESTC