REST API - 테스트코드 Refactoring 테스트코드의 중복을 제거하는 방법은 여러 가지가 있지만, JunitParams 를 사용할것 JUnitParams https://github.com/Pragmatists/JUnitParams JUnit Method는 Parameter를 사용할 수 없지만, Parameter를 사용할수 있게 해주며 Parameter를 활용하여 중복을 제거할 수 있다. 의존성 추가 테스트 코드 @Parameters에 해당하는 값들이 들어간채로 호출하여 여러번 테스트도 가능하다. 하지만 이 방법은 Type-Safe 하지않다. 이에 대한 대안도 존재한다. Type-Safe한 방법 Parameters로 제공할 Object[]를 return 하는 Method를 정의한다. Method..
REST API - Event 생성 API 구현 - 비즈니스 로직 basePrice maxPrice 값에따라 무료 이벤트인지, location 에 따라 오프라인인지 , 온라인인지 비즈니스 로직을 적용한다. Event 생성 API 테스트 무료 이벤트인지, 오프라인 이벤트인지 여부를 판단하는 테스트 Event 생성 API 변경 입력값을 받고나서 이벤트를 저장하기 이전 Event의 상태를 Update 하는데 Domain Class에 Update() Method를 정의 코드가 간결하기 때문에 ServiceLayer를 따로 생성하지 않았지만, ServiceLayer가 존재한다면 해당 비지니스 로직을 Service Layer에 작성하는것도 좋은 방법이다. 테스트 결과 비지니스 로직에 따라 무료 이벤트인지, 오프라인..
REST API - Event 생성 API 구현 - BAD_REQUEST 응답 BAD_REQUEST 응답을 보냈지만, 응답만 봐서는 어떤 원인에 의해 BAD_REQUEST가 발생했는지에 대한 정보가 제공되고 있지 않다. 잘못된 요청이라면 어떤 원인에의해 잘못된 요청인지 응답과 함께 제공해야한다. 테스트 코드 잘못된 요청을 보냈을경우 해당 에러 정보가 존재하는지 테스트 이러한 에러에 대한 정보는 Errors객체가 가지고있다. 이벤트 생성 API 변경 Error가 발생하면 Errors객체를 응답본문으로 제공하면 되지않나 ? ObjectMapper는 다양한 Serializer를 가지고있는데 Errors객체는 'Java Bean Spec' 을 준수하는 객체가 아니기때문에 Serialization이 불가능하다. ..
REST API - TEST Description Annotation TEST 코드를 작성하다보면 해당 코드가 어떤 테스트인지 알기 힘들경우기 존재함. Junit5 에서는 Description Annotation 을 제공하지만 Junit4에서는 제공하지 않는다. @TestDescription @Target(ElementType.METHOD) 애노테이션 대상을 METHOD LEVEL로 지정 @Retention(RetentionPolicy.SOURCE) 애노테이션을 소스 코드 까지만 유지한다. Example