수색…


통사론

  • @FixMethodOrder // 기본 메서드 정렬 도구를 사용하여 테스트를 실행합니다.
  • @FixMethodOrder (MethodSorters) // MethodSorters 열거 형과 연결된 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() {}
}

testA , testBtestC 해시가 각각 3, 2 및 1이라고 가정합니다. 그런 다음 실행 순서는 다음과 같습니다.

  1. testC
  2. 시험 B
  3. 종피

모든 테스트에 대해 해시가 동일하다고 가정합니다. 모든 해시가 같기 때문에 실행 순서는 사전 식 순서를 기반으로합니다. 실행 순서는 다음과 같습니다.

  1. 종피
  2. 시험 B
  3. testC

사전 순

주석 사용 @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. 종피
  2. 시험 B
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow