3) 단위 테스트란?
프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해준다.
출처: 단위 테스트 (위키백과)
👉 버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커지는 걸 알 수 있어요!

4) JUnit 사용 설정
💡 JUnit이란 자바 프로그래밍 언어용 단위 테스트 프레임워크입니다.
build.gradle 파일을 열어보면 JUnit 사용을 위한 환경설정이 이미 되어있습니다
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}

5) 테스트 파일 생성
파일 찾기 (단축키 익히면 좋음)

'product' 입력 후 "Product.java" 파일 선택

"Product.java" 파일 내에서 마우스 오른쪽 버튼 클릭 > "Generate..." 클릭

"Test..." 클릭

기본세팅 그대로 OK 눌러서 생성

6) 테스트 코드 작성
import com.sparta.springcore.dto.ProductRequestDto;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ProductTest {
@Test
@DisplayName("정상 케이스")
void createProduct_Normal() {
// given
Long userId = 100L;
String title = "오리온 꼬북칩 초코츄러스맛 160g";
String image = "https://shopping-phinf.pstatic.net/main_2416122/24161228524.20200915151118.jpg";
String link = "https://search.shopping.naver.com/gate.nhn?id=24161228524";
int lprice = 2350;
ProductRequestDto requestDto = new ProductRequestDto(
title,
image,
link,
lprice
);
// when
Product product = new Product(requestDto, userId);
// then
assertNull(product.getId());
assertEquals(userId, product.getUserId());
assertEquals(title, product.getTitle());
assertEquals(image, product.getImage());
assertEquals(link, product.getLink());
assertEquals(lprice, product.getLprice());
assertEquals(0, product.getMyprice());
}
}7) 테스트 수행
함수 좌측의 실행 아이콘 클릭 후에 "Run.." 버튼 클릭

수행 결과

수행 결과가 한글로 표시되지 않는 경우
[Intellij 메뉴] File - Settings - 검색창에 "gradle" 입력
