반환타입의 차이점EXECUTE() 는void 가 반환타입입니다.해당 메서드는 어떤 결과를 반환하는 것이 아니기에, 이후에 상황에 대한 검증이 어렵습니다Submit() 는Future 가 반환타입입니다.해당 메서드는 어떤 결과가 발생했는지 반환타입으로 받을 수 있기에, 상화에 대한 검증이 쉽습니다.작업 중의 예외처리에 관하여Execute() 작업이 실패하는 경우 그냥 에러가 발생하고 작업이 멈추게 됩니다.스레드에서 UncaughtExceptionHandler 가 발생함Submit()작업이 실패해도 Future 객체에 해당 예외 등의 관련한 정보가 일단 담기게 됩니다.이후 Future.get() 을 수행하게 된다면 그때 예외가 발생한다고 합니다.어떨 때 각자 사용하면 되느냐?submit 의 경우서비스 로직 등..
DEPARTURE("DEPARTURE", "배송지시"), DELIVERING("DELIVERING", "배송중"), FINAL_DELIVERY("FINAL_DELIVERY", "배송완료"),enum 에 위에 해당하는 한글 값이 들어가는 것은 왠만하면 권장되지 않는 행동이라고한다.또한 상수값과 value 인 DEPARTURE 는 문자가 동일하다…이런 이유때문에 삭제가 권장되긴하는데나는 enum 에 별도의 value 로 검색할 수 있는 기능이 별도 존재해야한다고 생각하기도하며만약 상수값이 변경된다면 데이터베이스에 저장되는 의미까지 변질될 가능성이 있다고 생각되기에, 유지보수의 면에서 별도 value 표기는 필수적이라고 생각된다. public void removeOrderProducts(long orderId..
프로젝트 도중단순 취소만 구현할 것이 아니라,언제 취소가 되며, 언제 반품이 될 것인지에 대한 정의도 필요하다는 걸 깜빡하고 있었다..일단취소는결제완료상품준비중반품은나머지 조건에서 수행하는 걸로 생각했다. Uploaded by N2T
MOCKITO의 when() 은코드 흐름상의 해당 레이어에서 고려하지 않아도 될 어떠한 메서드의 흐름에 대한 응답 등을 모킹하기 위하여사용한다.그런데왜 when() 은 코드 흐름상에 given 에 해당하는 부분이라고 생각된다.근데 왜 static 메서드 이름을 when() 을 설정하여테스크 코드의 시나리오를 이딴 식으로 헷갈리게 해놓은 건지 모르겠다.그래서 등장한게 BDDMockito 라고 한다.관련 게시물은 아래를 참조하면 될 것 같다.[Spring] BDDMockito VS MockitoBDDMockito VS Mockito 최근 테스트 코드를 작성하는 것에 재미가 들려서 내가 이해할겸 정리해본다.🥸 순수 Mockito에서 BDD의 Given / When / Then을 위해서 다음과 같이 when( ..
일단 프로젝트를 진행하면서 크게 느낀 사항이 있다.소스를 먼저 짜놓고 테스트를 돌리는 경우사람의 마음이란게, 최대한 내 소스가 맞다고 생각하고 짜게된다.이건 테스트코드 뉴비의 경우 발생할 수 있는 문제라고 생각도 된다개발자는 내가 작성한 코드에 대해 무의식적인 편향성 을 가지게 된다.내 코드는 내 머릿속에서 올바르게 돌아갈 수 밖에 없다 라는 가정 하에 테스트를 작성하게 되는데,이는 테스트가 진정한 오류 검출의 목적보다 내 코드에 대해 테스트는 정확하게 다 통과하는데? 라는 사고로 코드를 정당화하는 도구로 변질시키게 된다.실제로 테스트 코드의 에서 장바구니 기능의 경우장바구니에서 테스크 코드안의 검증해야할 엣지케이스 가 있음직한 부분에서 실제 버그를 찾아내는 것보다 코드가 통과할 수 있도록 테스트를 조정..
1. @Mock의미@Mock 어노테이션은 Mockito에게 해당 필드를 모의 객체로 만들어야 함을 알림.사용 시기테스트할 클래스의 외부 의존성을 모킹할 때 사용함. @Mock private CartPersistence cartPersistence; @Mock private CartMapper cartMapper; 2. @InjectMocks의미@InjectMocks 어노테이션은 테스트 대상 클래스의 인스턴스를 생성하고, 모의 객체를 해당 클래스의 필드에 주입함.사용 시기테스트할 클래스의 인스턴스를 생성하고 모의 객체를 주입할 때 사용함. @InjectMocks private CartServiceImpl cartService; 3. when(...)의미when 메서드는 모의 객체의 메서드가 호출됐을 때 어..