@DisplayName("PostService 테스트")// 클래스 단위 이름classPostServiceTest{@Test@DisplayName("게시글을 생성하면 ID가 부여된다")// 메서드 단위 이름voidcreatePost_success(){...}@Test@DisplayName("존재하지 않는 게시글 조회 시 ResourceNotFoundException이 발생한다")voidfindById_notFound_throwsException(){...}}
@DisplayName("재고가 충분하면 주문이 성공한다")@DisplayName("재고가 부족하면 OutOfStockException이 발생한다")@DisplayName("로그인 실패 시 401 응답을 반환한다")@DisplayName("관리자만 게시글을 삭제할 수 있다")
@DisplayName("[GET] /api/posts/{id} - 정상 조회 시 200 OK")@DisplayName("[POST] /api/posts - 필수 값 누락 시 400 Bad Request")@DisplayName("[DELETE] /api/posts/{id} - 권한 없음 시 403 Forbidden")
// 메서드명: 영문 + @DisplayName: 한국어 조합 권장@Test@DisplayName("비밀번호가 최소 8자 미만이면 예외가 발생한다")voidcreateUser_withShortPassword_throwsException(){...}
@DisplayName("PostService 테스트")classPostServiceTest{@Nested@DisplayName("게시글 생성")classCreatePost{@Test@DisplayName("정상 입력으로 생성 성공")voidsuccess(){...}@Test@DisplayName("제목 없으면 예외 발생")voidwithEmptyTitle_throwsException(){...}}@Nested@DisplayName("게시글 조회")classFindPost{@Test@DisplayName("존재하는 ID로 조회 성공")voidfound(){...}@Test@DisplayName("없는 ID로 조회 시 예외")voidnotFound_throwsException(){...}}}
@ParameterizedTest(name ="[{index}] {0}은 잘못된 이름 형식이다")@ValueSource(strings ={"q","qwerasdfzxcv","qq23"})@DisplayName("유효하지 않은 이름으로 생성 시 예외 발생")voidinvalidName_throwsException(String invalidName){...}