
AssertJ의 Assertions를 사용해서 검증을 시작하는데, junit이 아닌, assertj의 의존성을 추가해주시면 됩니다!

그럼 다음과 같이 제일 많이 사용하는 assertThat() 메서드를 사용할 수 있습니다.
+저기서 option(alt) + enter 누르시면 static으로 처리해서 짧게 사용하실 수 있습니다.

이제 저희가 검증하고자 하는 값이나 객체를 assertThat() 안에 넣고 검증을 하면 됩니다.
위의 예시 같은 경우는, Cart 객체에 대한 검증을 진행하겠다는 것입니다.
기본적으로 자주 사용하는 것 중에 다음과 같은 것들이 있습니다.
extracting()에서 명시한 필드들의 실제 기대값을 명시하면 됩니다.
InAnyOrder는 extracting()에서 명시한 필드들의 순서에 상관없이, 값들만 일치하면 되기때문에 사용하는 방식입니다.
객체가 List인 경우에는 파라미터로 tuple()을 사용해서 지정해주면 됩니다.
// When
List<Product> products = productRepository.findBySellingStatusIn(List.of(SELLING, HOLD));
// Then
assertThat(products).hasSize(2)
.extracting("productNumber", "name", "sellingStatus")
.containsExactlyInAnyOrder(
tuple("001", "아메리카노", SELLING),
tuple("002", "카페라떼", HOLD)
);
예외처리 테스트는 assertThatThrowBy 를 사용하면 됩니다.
@DisplayName("장바구니 상품의 개수가 1개 미만일 경우, 예외가 발생한다.")
@Test
void cart_item_min_quantity_exception_test() {
// Given
UUID userId = UUID.randomUUID();
CartCreateRequestDto request = CartCreateRequestDto.builder()
.userId(userId)
.build();
Cart savedCart = cartService.saveCart(request);
CartItemCreateRequestDto requestDto = CartItemCreateRequestDto.of(UUID.randomUUID(), 0);
// When & Then
assertThatThrownBy(() -> cartService.saveCartItem(savedCart.getCartId(), requestDto))
.isInstanceOf(CartItemException.MinQuantity.class);
}