[SPRING] 테스트 코드 작성 - 1

bluemind·2023년 1월 19일
0

SPRING

목록 보기
6/6

🖋️ 테스트 코드의 필요성

  • 서버를 실행해서 직접 테스트 해보지 않아도 되기 때문에 시간 단축가능

  • 테스트 코드를 통해 어떤 값이 주어졌을 때(GIVE), 어떤 실행을 하면(WHEN), 어떤 결과가 나와야하는지(THEN)를 알 수 있기 때문에 코드를 파악하는데 도움을 줄 수 있음.
    give -when - then

  • 수정사항 발생 시 기존의 코드에 영향을 주는지 테스트 코드를 통해 파악할 수 있음

  • 정확한 테스트 코드를 작성해 놓으면 실제 코드를 제대로 작성했는지 확인할 수 있음

  • 에러를 클라이언트보다 빨리 발견 할 수 있다



🖋️ 테스트 코드 예제

  • 현재 프로젝트 중인 login 테스트



🖋️ 테스트 코드 생성 방법( IntelliJ )

  1. 테스트 코드를 생성할 클래스를 클릭하고 alt+Enter 클릭 !
  2. 생성을 클릭!



🖋️ 설계한 테스트 코드 구현

👉  @SpringBootTest : @Autowired 사용 가능하게 해줌

👉  @Autowired : SignInHandler를 주입받음

👉  @BeforeEach : 각각의 테스트 시작 전 실행

👉  @AfterEach : 각각의 테스트 종료 후 실행

👉  @Test : 테스트라는 것을 나타냄

👉  @DisplayName : 화면에 보일 테스트명 지정

👉  Assertions는 org.assertj.core.api 패키지의 Assertions 사용

👉  Assertions.assertThat(실행값).isEqualTo(기대값); 이런 식으로 테스트 가능

👉  import static org.assertj.core.api.Assertions.assertThat;
package com.laonworks.shop.api.controller;

import com.laonworks.shop.api.controller.handler.auth.SignInHandler;
import com.laonworks.shop.api.controller.request.auth.SignInRequest;
import com.laonworks.shop.api.controller.response.auth.SignInResponse;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.assertj.core.api.Assertions.assertThat;


@SpringBootTest
class AuthControllerTest {

    @Autowired
    SignInHandler signInHandler;

    SignInRequest request = null;
    SignInResponse response = null;

    @BeforeEach
    void beforeEach(){
        // 테스트를 시작할 때마다 SignInRequest req 새로 생성
        request = new SignInRequest();
        SignInResponse response = new SignInResponse();
        request.setEmail("123");
        request.setUserType(1);
        request.setPassword("123");
    }

    @AfterEach
    void afterEach(){

    }
    @Test
    @DisplayName("1. 로그인 테스트")
    void loginTest(){

        response = signInHandler.execute(request);
        assertThat(response.getUserInfo().getEmail()).isEqualTo(request.getEmail());
        assertThat(response.getUserInfo().getUserType()).isEqualTo(request.getUserType());
    }

}

⚙️ 결과 화면

profile
실력있는 개발자가 되기 위한 여정

0개의 댓글