TDD: 어노테이션 정보

김아무개·2023년 4월 29일
0

TDD

목록 보기
3/4

보고 배운 블로그 : donghyeon.dev

@Test

메서드가 테스트 메서드임을 나타내는 어노테이션.
이 어노테이션이 붙은 메서드는 테스트 실행 시 호출된다.

vs


@DisplayName

테스트 클래스나, 테스트 메서드에 별칭을 붙여줄 때 사용한다.


이 어노테이션을 안붙이면 ??
아래와 같이 클래스 이름이 나타나게 된다.


@DisplayNameGeneration

테스트 클래스에 이 어노테이션을 붙이면 ,
테스트 보고서에 표시될 테스트 메서드 이름 / 클래스 이름을 변경할 수 있다.

DisplayNameGenerator 인터페이스를 구현한 클래스를 인자로 전달해야 한다.

  1. Simple: 기본값으로, 테스트 메서드 이름을 그대로 사용한다.

  2. ReplaceUnderscores: 테스트 메서드 이름에서 밑줄(_)을 공백으로 바꿔준다.

  3. IndicativeSentences: 테스트 클래스와 메서드 이름을 사용하여 완전한 문장을 형성한다.

또는 DisplayNameGenerator 인터페이스를 구현한 클래스를 작성하여,
사용자 정의 규칙을 생성하여 사용 할 수도 있다.


@BeforeEach

각 테스트 메서드가 실행되기 전에 호출되는 메서드에 이 어노테이션을 사용한다.
일반적으로 테스트에 필요한 준비 작업을 수행하는 데 사용!


@BeforeAll

테스트 클래스의 모든 테스트 메서드가 실행되기 전에 한 번만 호출되는 메서드에 이 어노테이션을 사용한다.
이 메서드는 static이어야만 한다.


@AfterEach

각 테스트 메서드가 실행된 후에 호출되는 메서드에 이 어노테이션을 사용한다.
테스트 후 정리 작업을 수행하는 데 사용.


@AfterAll

테스트 클래스의 모든 테스트 메서드가 실행된 후에 한 번만 호출되는 메서드에 이 사용.
이 메서드는 static이어야만 한다.


@Disabled

테스트 메서드나 테스트 클래스를 비활성화하는 데 사용되는 어노테이션.
이 어노테이션이 붙은 테스트는 실행되지 않는다.


@Nested

중첩된 테스트 클래스를 나타내는 데 사용되는 어노테이션.
이 어노테이션을 사용하면 관련된 테스트를 그룹화하여 더 명확한 구조를 만들 수 있다.


@Tag

테스트 메서드나 클래스에 태그를 붙이는 데 사용되는 어노테이션이다.
태그를 사용하면 특정 테스트 그룹을 선택하여 실행할 수 있다.

@Tag("includeTag")
public class TagTest {

    @Test
    void aTest() {
        System.out.println("a include ==========================");
    }

    @Test
    void bTest() {
        System.out.println("b include ==========================");
    }
}

@Tag("notInclude")
class TacTest {

    @Test
    void aTest() {
        System.out.println("not include a ==========================");
    }

    @Test
    void bTest() {
        System.out.println("not include b ==========================");
    }
}
// build.gradle.kts 설정

tasks.test {
    useJUnitPlatform {
        includeTags("includeTag")
        excludeTags("notIncludeTag")
    }
}

실행 결과


@ExtendWith

테스트 클래스나 메서드에 확장을 적용하는 데 사용되는 어노테이션.
JUnit 5의 확장 모델에서는 @ExtendWith를 사용하여
테스트 인스턴스의 수명 주기, 테스트 조건, 매개 변수 주입 등을 제어할 수 있다.


@ParameterizedTest

매개 변수화된 테스트를 작성할 때 사용되는 어노테이션이다.
이 어노테이션을 사용하면 여러 입력 값에 대해 동일한 테스트 로직을 반복 실행할 수 있다.


@ValueSource, @EnumSource, @MethodSource, @CsvSource, @CsvFileSource, @ArgumentsSource

매개 변수화된 테스트에 사용되는 인자를 제공하는 어노테이션.
이 어노테이션들은 @ParameterizedTest와 함께 사용된다.

  • @ValueSource: 원시 타입 값의 배열을 제공
  • @EnumSource: 특정 열거형의 모든 값을 제공
  • @MethodSource: 테스트 클래스에 정의된 정적 메서드를 통해 인자를 제공
  • @CsvSource: 쉼표로 구분된 문자열 목록을 인자로 제공
  • @CsvFileSource: CSV 파일로부터 인자를 읽어 제공
  • @ArgumentsSource: 사용자 정의 ArgumentsProvider 구현을 통해 인자를 제공

@TestInstance

테스트 클래스 인스턴스의 수명 주기를 제어하는 데 사용되는 어노테이션.
기본값은 Lifecycle.PER_CLASS이며, 이 경우 테스트 클래스당 하나의 인스턴스가 생성된다. Lifecycle.PER_METHOD를 사용하면 각 테스트 메서드마다 새로운 인스턴스가 생성!


@TestFactory

동적 테스트를 생성하는 메서드를 나타내는 어노테이션.
이 어노테이션을 사용하면 런타임에 테스트 케이스를 생성하고 실행할 수 있다.


@RepeatedTest

특정 테스트를 여러 번 반복 실행하는 데 사용되는 어노테이션.
이 어노테이션에 반복 횟수를 지정하여 테스트를 원하는 만큼 반복할 수 있다.

profile
Hello velog! 

0개의 댓글