ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TDD] 예제 테스트 작성
    개발공부/JAVA 2022. 10. 4. 22:23

    기본 테스트 코드 작성 흐름

    Given - When - Then (BDD 스타일의 mokito)

    • given : 특정 전문을 넣으면
    • when : 가입프로세스가 진행되고
    • then : 성공 결과가 나올 것이다

    Given

    • 어떤 상황이 주어지면~ (가정)에 해당하는 부분
    • 어떤 결과가 나올 것인지 stubbing(when)을 통해 행동을 지정해준다

    When

    • 어떤 상황이 일어나면 ~ (실행)에 해당하는 부분
    • 테스트 하려는 서비스 코드 실행
    • 실제 행동을 보여주면 됨

    Then

    • 어떤 결과가 나올 것이다 (결과)에 해당하는 부분
    • assert나 verify를 통해 실제 그 결과가 제대로 나왔는지 검증하는 부분

    가입 프로세스 유닛 테스트 코드

    @Slf4j
    @SpringBootTest
    @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    @ExtendWith(MockitoExtension.class)
    public class AddTest {
    
    
        @BeforeAll
        static void makeRequest() {
    		//테스트 전문 객체
        }
    
        @Test
        @Order(1)
        @DisplayName("[가입] 1. 성공")
        void 가입_성공() {
    
        }
    
        @Test
        @Order(2)
        @DisplayName("[가입] 2. 실패 : SEQ 조회 오류")
        public void 가입_실패_SEQ_오류() {
    
        }
    
        @Test
        @Order(3)
        @DisplayName("[가입] 3. 실패 : DB insert 오류")
        public void 가입_실패_DB_insert_오류() {
    
        }
    
        @Test
        @Order(4)
        @DisplayName("[가입] 4. 실패 : ADD 전문 오류")
        public void 가입_실패_ADD_전문_오류() {
    
    
        }
    
    
    
    
    }

     

     

    +) 코드 내용은 공개할 수 는 없지만 사실 저런 테스트 케이스는 다르지만 안의 given-when-then의 내용은 크게 다르지 않아

    왜 작성하는지 이해가 안됐다

    예를 들어 3의 DB insert 오류 나 4의 ADD 전문 오류는 결국 실패의 결과 동작은 똑같은데 굳이 중복되서 작성해야하나? 이런 맥락에서!

    그렇지만 이렇게 각각의 테스트 케이스를 잘 작성해 놔야 나중에 테스트 코드 기반의 API 명세를 작성할 수도 있기 때문에

    중복되는 내용이더라 하더라도 모두 작성하는게 좋다 !

Designed by Tistory.