미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Junit5 의 Assertions.fail 에 대해 질문이 있습니다.
@Testpublic void 상품주문_재고수량초과() throws Exception { //Given Member member = createMember(); Item item = createBook("시골 JPA", 10000, 10); //이름, 가격, 재고 int orderCount = 11; //재고보다 많은 수량 //When assertThrows(NotEnoughStockException.class, () -> { orderService.order(member.getId(), item.getId(), orderCount);}); //Then fail("재고 수량 부족 예외가 발생해야 한다.");}
안녕하십니까. 김영한님의 강의를 열심히 수강중인 학생입니다.
Junit5에 대해 질문이 있어 글을 올립니다.
제가 Junit5를 배워보려고 강의 진행중 Junit4 대신 Junit5 를 써보았습니다.
그런데 Assertions.fail 때문에 위 코드가 자꾸 실패가 뜨더라고요.
제가 생각한 로직은 김영한님 강의에서 처럼 Assertions.assertThrows 안의 로직에서 예외를 던지면 fail까지 내려오지 않고 그대로 테스트가 성공으로 종료되며, 만약 예외를 던지지 않으면 fail까지 내려와 테스트 실패가 나오는 것이었습니다.
어떻게 코드를 수정하면 될까요?
------------------------------------------------------------------------------------------------------------------
설명이 부족한 것 같아 추가로 남깁니다.
위 코드는 재고보다 많은 수량이 입력됐을때 예외를 제대로 내뱉는지 확인하기 위한 테스트입니다.
만약 예외를 제대로 뱉었다면 김영한님 강의에서처럼 fail() 까지 안넘어가고 assertThrows 에서 테스트가 종료되고 성공으로 반환되어야 했습니다.
그런데 위 코드에서는 코드 진행이 fail까지 내려가고 그대로 실패가 뜨더라고요.
Service, repository와 같은 기타 다른 연관 코드들은 김영한님 코드와 동일하게 작성하였으며, fail을 주석처리하고 위 테스트를 돌렸을 경우 성공처리가 됩니다.
상기 목적을 달성하려면 위 코드를 어떻게 수정하면 될까요?