@Nested 적용기

itbuddy·2024년 8월 20일

Spring & Java

목록 보기
4/8

TDD 를 하다 보니 테스트 케이스가 많아질 수록 테스트들을 한눈에 읽어내기 어려워졌고,클래스의 메소드별로 한번 더 분류하는 작업에 필요성이 느껴졌다.

그렇다고 해서 하나의 메소드마다 테스트 클래스를 만들기에는 더 혼란 스러워질 것이 분명하기에 다른 방안을 찾아 보았다.

@Nested 어노테이션

@Nested 어노테이션은 테스트 클래스 내에 inner class를 작성 함으로서 테스트 클래스 내의 테스트 케이스를 분류할 수 있도록 지원하는 라이브러리이다.

@Nested 어노테이션이 달린 inner class는 각각 독립적인 @BeforeEach, @AfterEach 도 소유할 수 있다.

public class NestedTest {
    @BeforeEach()
    void beforeEach() {
        System.out.println("NestedTest.beforeEach()");
    }

    @Nested
    class FirstNestedClass {
        @BeforeEach()
        void beforeEach() {
            System.out.println("FirstNestedClass.beforeEach()");
        }

        @Test
        void test() {
            System.out.println("FirstNestedClass.test()");
        }
    }

    @Nested
    class SecondNestedClass {
        @BeforeEach()
        void beforeEach() {
            System.out.println("SecondNestedClass.beforeEach()");
        }

        @Test
        void test() {
            System.out.println("SecondNestedClass.test()");
        }
   }
}


위 로그를 보면 테스트 실행시 NestedTest.beforeEach()가 각각의 @Nested inner class 마다 작동하는것을 볼수 있다.

적용 전후 비교

@Nested 적용후에는 테스트 결과Rk 훨씬 잘 정리되어 있음을 알수 있다.

profile
프론트도 조금 아는 짱구 같은 서버 프로그래머

0개의 댓글