HTTP 통신에서 쿠키/세션을 활용하는 이유
- HTTP 통신은 한번 연결했다가 끊어지면 저장된 내용이 사라짐(connectionless, stateless). 이것을 보완하기 위해 쿠키 또는 세션을 사용함.
인증에 사용되는 정보
- 쿠키 : 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
-> 브라우저가 종료되어도 인증이 유지된다는 특징이 있음.
- 세션 :
https://interconnection.tistory.com/74
테스트 코드란?
테스트 코드는 작성한 코드가 잘 동작하고 문제가 없는지를 확인하는 목적을 가진 코드이다. 유지 보수와 기능 검증에 꼭 필요한 코드이다.
given-when-then 패턴
- given : 테스트 실행을 위해 필요한 데이터를 준비하는 단계
- when : 테스트를 진행하는 단계
- then : when에서 수행한 테스트 결과를 검증하는 단계
JUnit이란?
JUnit은 자바 언어를 위한 단위 테스트 프레임워크임. 단위 테스트란, 작성한 코드가 의도대로 동작하는지 작은 단위로 검증하는 것을 의미함.
JUnit의 특징
-> 테스트 방식을 구분할 수 있는 어노테이션 제공 : @Test 어노테이션으로, 메소드를 호출할 때마다 새 인스턴스를 생성
-> 예상 결과를 검증하는 Assertion 메소드 제공
-> 사용 방법이 단순하고, 테스트 코드 작성 시간이 적음
-> 자동 실행, 자체 결과를 확인하고 즉각적인 피드백 제공
ex) 새로운 메뉴를 저장하는 코드 테스트
@DisplayName("새로운 메뉴를 저장한다.")
@Test
public void saveMenuTest() {
// given : 메뉴를 저장하기 위한 준비 과정
String name = "카페라떼";
int price = 5500;
Menu latte = new Menu(name, price);
// when : 실제로 메뉴를 저장
long saveId = menuService.save(latte);
// then : 메뉴가 잘 추가되었는지 검증
Menu savedMenu = menuService.findById(saveId).get();
assertThat(savedMenu.getName()).isEqualTo(name);
assertThat(savedMenu.getPrice()).isEqualTo(price);
}
자주 사용하는 JUnit 어노테이션
- @BeforeAll 어노테이션
전체 테스트를 시작하기 전에 처음으로 한 번만 실행함.
ex) 데이터베이스를 연결해야 하거나 테스트 환경을 초기화할 때 사용함.
이 어노테이션은 전체 테스트 실행 주기에서 한 번만 호출되어야 하기 때문에 메소드를 static으로 선언해야함.
- @BeforeEach 어노테이션
테스트 케이스를 시작하기 전에 매번 실행함.
ex) 테스트 메소드에서 사용하는 객체를 초기화하거나 테스트에 필요한 값을 미리 넣을 때 사용함.
각 인스턴스에 대해 메소드를 호출해야하므로 메소드는 static이 아님.
- @AfterAll 어노테이션
전체 테스트를 마치고 종료하기 전에 한 번만 실행함.
ex) 데이터 베이스 연결을 종료할 때나 공통적으로 사용하는 자원을 해제할 때 사용할 수 있음.
전체 테스트 실행 주기에서 한 번만 호출되어야 하기 때문에 메소드를 static으로 선언해야함.
- @AfterEach 어노테이션
각 테스트 케이스를 종료하기 전 매번 실행됨.
ex) 테스트 이후에 특정 데이터를 삭제해야 하는 경우 사용함.
각 인스턴스에 대해 메소드를 호출해야하므로 메소드는 static이 아님.
import org.junit.jupiter.api.*;
public class JUnitTotalTest {
@BeforeAll // 전체 테스트를 시작하기 전 1회 실행
public void beforeAll() {
System.out.println("@BeforeAll");
}
@BeforeEach // 각각의 테스트 케이스를 실행하기 전마다 실행
public void beforeEach() {
System.out.println("@BeforeEach");
}
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
@Test
public void test3() {
System.out.println("test3");
}
@AfterAll // 전체 테스트를 마치고 종료하기 전에 1회 실행
public void afterAll() {
System.out.println("@AfterAll");
}
@AfterEach // 각각의 테스트 케이스를 종료하기 전마다 실행
public void afterEach() {
System.out.println("@AfterEach");
}
}
AssertJ로 검증문 가독성 높이기
AssertJ는 JUnit과 함께 사용해 검증문의 가독성을 높여주는 라이브러리임.
테스트 코드 쓰는 법을 많이 연습해봐야 할 것 같다...
'Back-End > Spring' 카테고리의 다른 글
[Spring] 스프링 데이터 JPA 정리 (0) | 2024.04.18 |
---|---|
[Spring] 스프링 시큐리티 블로그 만들기 (0) | 2024.03.19 |
[Spring] 필터와 인터셉터 (0) | 2024.03.18 |
[Spring] Thymeleaf를 이용해서 블로그 화면 구성하기 (0) | 2024.03.13 |
[Spring] JPA로 CRUD 블로그 만들기 실습 정리 (0) | 2024.03.12 |