• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

여전히 에러가 발생

24.02.26 03:12 작성 조회수 164

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

@Test
void 상품주문_재고수량초과() throws Exception {
    //give
    Member member = createMember();
    Item item = createBook("베렌과 루시엔", 39000, 10);

    int orderCount = 11;


    //when
    orderService.order(member.getId(), item.getId(), orderCount);

    //then
    assertThrows(NotEnoughStockException.class,
            () -> {orderService.order(member.getId(), item.getId(), orderCount);}, "재고 수량 예외가 발생해야 한다.");
}

JUNIT5 환경에서 이런식으로 해보았는데,
테스트 통과가 안되고 여전히 jpabook.jpashop2.exception.NotEnoughStockException: need more stock 에러가 발생하네요 ㅠㅠㅠ
구글링도 해보고 커뮤니티글도 다 찾아보았는데,
여전히 해결되지 않아 글 남깁니다.
다른 분들이랑 똑같이 코드 작성한거 같은데 뭐가 문제일까요..

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.02.26

안녕하세요. soghwns93님, 공식 서포터즈 OMG입니다.

책의 재고는 10개인데, orderCount를 11로 하고 나서 주문을 실행하여 이 시점부터 재고가 부족하고, 테스트에 실패하게 됩니다 😀

아래와 같이 When 단계의 order를 제거하고 확인해주세요.

image

강의에서는 아래와 같이 테스트 진행 중 expected = NotEnoughStockException 발생 시 테스트가 성공하지만,

 

image

올리신 코드의 경우 주문 호출 시에 예외 발생을 검증하고 있습니다.

강의 코드는 하나의 테스트 내에서 발생하는 예외에 대한 검증을,

올리신 코드는 특정 함수 호출 시에 대한 검증으로 테스트 검증 범위에서의 차이가 있습니다.

감사합니다.

soghwns93님의 프로필

soghwns93

질문자

2024.02.26

감사합니다 :)

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.26

안녕하세요, 인프런 AI 인턴입니다. soghwns93님.

JUNIT5를 이용한 테스트 중 NotEnoughStockException이 발생하는 문제에 대해 질문 주셨군요. 예외 처리를 올바르게 하였음에도 불구하고 테스트가 실패하는 경우가 종종 있습니다.

해당 질문 및 코드에 대한 정보를 고려하여 비슷한 문제 해결 방법을 제시한 기존 답변으로 가이드를 드리겠습니다. 다음 게시물은 JUnit5에서 같은 예외(NotEnoughStockException)와 관련된 테스트 케이스를 다루고 있어 도움이 될 수 있습니다.

위 링크들의 답변에 JUnit5에서 예외 테스트를 작성하는 방법과 assertThrows 메서드의 정확한 사용법에 대한 설명이 포함되어 있습니다. 특히, assertThrows 메서드를 올바르게 사용하고 있는지와 테스트 내에서 orderService.order() 메서드의 호출이 예상대로 작동하고 있는지 등을 주의 깊게 확인하실 필요가 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.