인프런의 "더 자바, 애플리케이션을 테스트하는 다양한 방법”을 보고 정리한 것임

1. 소개 및 시작

1.1. 소개

  • 테스팅 프레임워크
  • 자바 8 이상을 필요함
  • 이전 JUnit 버전과 다르게, JUnt5는 세개의 서브 프로젝트로 이루어져 있음
    • JUnit5은 JUnit Platform + JUnit Jupiter + JUnit Vintage
    • JUnit Platform
      • JVM에서 테스트 프레임워크를 실행하는데 기초를 제공
      • TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있음
    • JUnit Jupiter
      • JUnit 5에서 테스트를 작성하고 확장을 하기 위한 새로운 프로그래밍 모델과 확장 모델의 조합
    • JUnit Vintage
      • 하위 호환성을 위해 JUnit3과 JUnt4를 기반으로 돌아가는 플랫폼에 테스트 엔진을 제공

1.2. 시작

의존성 추가

  • 2.2+ 버전의 스프링 부트 프로젝트를 만든다면 기본으로 의존성 추가되어 있음
  • maven
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.5.2</version>
        <scope>test</scope>
    </dependency>

기본 애노테이션

  • @Test
    • 테스트 클래스나 테스트 메소드에 이름을 붙여줄 때 사용
  • @BeforeAll
    • 테스트가 시작하기 전 딱 한 번만 실행
  • @AfterAll
    • 테스트가 완전히 끝난 후 딱 한 번만 실행
  • @BeforeEach
    • 각각 테스트 메소드가 실행되기전에 실행되어야 하는 메소드를 명시해 줌
    • 목업 데이터를 미리 세팅해주기 위해 주로 사용
  • @AfterEach
    • @Test , @RepeatedTest , @ParameterizedTest , @TestFactory 가 붙은 테스트 메소드가 실행되고 난 후 실행
  • @Disabled
    • 테스트 클래스나, 메소드의 테스트를 비활성화 함
  • @DisplayNameGeneration
    • Method와 Class 레퍼런스를 사용해서 테스트 이름을 표기하는 방법 설정
    • 기본 구현체로 ReplaceUnderscores 제공
  • @DisplayName
    • 어떤 테스트인지 테스트 이름을 보다 쉽게 표현할 수 있는 방법을 제공하는 애노테이션
    • @DisplayNameGeneration 보다 우선 순위가 높다.
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
class TestStudyTest {

    @DisplayName("스터디 만들기")
    @Test
    void create_new_study() {
        TestStudy testStudy = new TestStudy();
        assertNotNull(testStudy);
        System.out.println("create!");
    }

    @Test
    void create_new_study_again() {
        TestStudy testStudy = new TestStudy();
        assertNotNull(testStudy);
        System.out.println("create2!");
    }

    @BeforeAll
    static void beforeAll() {
        System.out.println("BeforeAll!");
    }

    @AfterAll
    static void afterAll() {
        System.out.println("AfterAll!");
    }

    @BeforeEach
    void setUp() {
        System.out.println("BeforeEach!");
    }

    @AfterEach
    void tearDown() {
        System.out.println("AfterEach!");
    }
}
profile
고우고우~

0개의 댓글