본문 바로가기

TIL

231129_TIL

오늘한일

  • 알고리즘 문제풀기
  • spring 공부

 

 

 

단위 테스트란 무엇일까?

  • 개발자는 단위 테스트를 작성하여 프로그램을 테스트 할 수 있습니다.
    • 단위 테스트는 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지를 검사하는 테스트 기법입니다.
    • 단위 테스트는 빠르게 작성할 수 있고 문제 발생 시 어느 부분이 잘 못 되었는지를 빠르고 정확하게 확인할 수 있다는 장점이 있습니다.

 

 

 

 

 

자바 프로그래밍 언어 용 단위 테스트 프레임워크인 JUnit5를 다뤄보겠습니다.

 

Before - After

 

@BeforeEach
void setUp() {
    System.out.println("각각의 테스트 코드가 실행되기 전에 수행");
}

각각의 테스트 코드가 실행되기 전에 수행되는 메서드를 만들어 준다.

 

@AfterEach
void tearDown() {
    System.out.println("각각의 테스트 코드가 실행된 후에 수행\n");
}

각각의 테스트 코드가 실행된 후에 수행되는 메서드를 만들어 준다.

 

@AfterEach
void tearDown() {
    System.out.println("각각의 테스트 코드가 실행된 후에 수행\n");
}
  • 모든 테스트 코드가 수행되기 전에 최초로 수행되는 메서드를 만들어 준다
  • static 메서드로 만들어야한다

 

@AfterAll
static void afterAll() {
    System.out.println("모든 테스트 코드가 수행된 후 마지막으로 수행");
}
  • 모든 테스트 코드가 수행된 후 마지막으로 수행되는 메서드를 만들어 줍니다.
  • static 메서드로 만들어야합니다

 

 

테스트 꾸미기

@Test
@DisplayName("테스트의 내용을 한눈에 알아볼 수 있게 네이밍 해줄 수 있습니다.")
void test1() {
    System.out.println("테스트의 수행 내용들을 빠르게 파악할 수 있습니다.");
}

 

 

@Nested
@DisplayName("주제 별로 테스트를 그룹지어서 파악하기 좋습니다.")
class Test1 {
    @Test
    @DisplayName("Test1 - test1()")
    void test1() {
        System.out.println("Test1.test1");
    }

    @Test
    @DisplayName("Test1 - test2()")
    void test2() {
        System.out.println("Test1.test2");
    }
}

@Nested
@DisplayName("Test2 다른 주제")
class Test2 {
    @Test
    @DisplayName("Test2 - test1()")
    void test1() {
        System.out.println("Test2.test1");
    }

    @Test
    @DisplayName("Test2 - test2()")
    void test2() {
        System.out.println("Test2.test2");
    }
}

 

 

 

@Nested
@DisplayName("주제 별로 테스트를 그룹지어서 파악하기 좋습니다.")
class Test1 {
    @Test
    @DisplayName("Test1 - test1()")
    void test1() {
        System.out.println("Test1.test1");
    }

    @Test
    @DisplayName("Test1 - test2()")
    void test2() {
        System.out.println("Test1.test2");
    }
}

@Nested
@DisplayName("Test2 다른 주제")
class Test2 {
    @Test
    @DisplayName("Test2 - test1()")
    void test1() {
        System.out.println("Test2.test1");
    }

    @Test
    @DisplayName("Test2 - test2()")
    void test2() {
        System.out.println("Test2.test2");
    }
}

 

 

 

테스트 반복하기

@RepeatedTest(value = 5, name = "반복 테스트 {currentRepetition} / {totalRepetitions}")
void repeatTest(RepetitionInfo info) {
    System.out.println("테스트 반복 : " + info.getCurrentRepetition() + " / " + info.getTotalRepetitions());
}
  • @RepeatedTest를 사용하여 해당 테스트 메서드를 반복할 수 있습니다.
  • name 속성을 사용하여 네이밍할 수 있습니다.
  • RepetitionInfo 값을 파라미터로 받아서 현재 반복 횟수와 총 횟수 값을 확인할 수 있습니다.

 

@DisplayName("파라미터 값 활용하여 테스트 하기")
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})
void parameterTest(int num) {
    System.out.println("5 * num = " + 5 * num);
}
  • @ParameterizedTest를 사용하여 파라미터를 받아 테스트할 수 있는 메서드를 만들 수 있습니다.
  • @ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})를 사용하여 파라미터 값을 전달 할 수 있습니다.
    • 전달되는 파라미터 수 만큼 테스트 메서드가 수행됩니다.
    • int, String 등 여러 타입의 파라미터를 전달할 수 있습니다

 

 

 

 

느낀점

  • 테스트 코드의 중요성을 알게 되었다.

'TIL' 카테고리의 다른 글

231206_TIL  (0) 2023.12.07
231130_TIL  (0) 2023.12.01
231128_TIL  (1) 2023.11.28
231117_TIL  (1) 2023.11.17
231110_TIL  (0) 2023.11.10