- 서버를 실행해서 직접 테스트 해보지 않아도 되기 때문에 시간 단축가능
- 테스트 코드를 통해 어떤 값이 주어졌을 때(GIVE), 어떤 실행을 하면(WHEN), 어떤 결과가 나와야하는지(THEN)를 알 수 있기 때문에 코드를 파악하는데 도움을 줄 수 있음.
give -when - then
- 수정사항 발생 시 기존의 코드에 영향을 주는지 테스트 코드를 통해 파악할 수 있음
- 정확한 테스트 코드를 작성해 놓으면 실제 코드를 제대로 작성했는지 확인할 수 있음
- 에러를 클라이언트보다 빨리 발견 할 수 있다
- 현재 프로젝트 중인 login 테스트
alt+Enter
클릭 !👉 @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());
}
}