サーチ…


構文

  • @FixMethodOrder //デフォルトメソッドソーターを使用してテストを実行する
  • @FixMethodOrder(MethodSorters)// MethodSorter列挙型に関連付けられたMethodSorterを使用してテストを実行します。

デフォルト注文

アノテーション@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() {}
}

testAtestB 、およびtestCハッシュがtestAおよび1であると仮定します。次に、実行順序は次のとおりです。

  1. テストC
  2. テストB
  3. テストA

すべてのテストのハッシュが同じであるとします。すべてのハッシュが同じであるため、実行順序は辞書順に基づいています。実行順序は次のとおりです。

  1. テストA
  2. テストB
  3. テストC

Lexicographical Order

注釈を使用し@FixMethodOrder方法ソーターでMethodSorters.NAME_ASCENDING 。これにより、クラス内のすべてのテストが決定的かつ予測可能な順序で実行されます。実装はメソッド名を比較し、同種の場合はメソッドのtoString()比較します。

JUnit Github - MethodSorter.javaのコードセグメント

public int compare(Method m1, Method m2) {
    final int comparison = m1.getName().compareTo(m2.getName());
    if(comparison != 0) {
        return comparison;
    }
    return m1.toString().compareTo(m2.toString());
}

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

実行順序は次のとおりです。

  1. テストA
  2. テストB
  3. テストC


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow