-
월간 멘토링 - 2개월차학습로그 2022. 2. 28. 23:15
진행기간
2022년 01월 31일 ~ 2022년 02월 27일 학습로그
📝 멘토링 6주차 ( 01월 31일 ~ 02월 06일 )
인수테스트 미션 2단계 , 3단계
- 정확한 값을 요할때는( ex) 금액, 값 ) BigDecimal 사용하기
public class Product { private BigDecimal price; }
- 인수테스트
https://dodop-blog.tistory.com/289
인수테스트 (Acceptance Test) ① 환경 구축 및 작성
지난 주, 미션 진행으로 인수테스트 코드를 작성하는 방법을 배웠다. 인수테스트에 대해서 알아보고 미션 수행 후 작성한 코드를 통해서 작성 방법을 정리한다. 인수테스트란 시스템이 예상대
dodop-blog.tistory.com
📝 멘토링 7주차 ( 02월 07일 ~ 02월 13일 )
인수테스트 미션 4단계, 인수테스트와 TDD 1단계
- IllegalStateException vs IllegalArgumentException
https://dodop-blog.tistory.com/290
IllegalStateException VS IllegalArgumentException
예외 처리를 부분을 작성하면서 IllegalStateException과 IllelgalArgumentException의 차이는 무엇인지, 어떤 상황에서 사용해야하는 지 궁금해졌다. IllegalStateException Signals that a method has been invo..
dodop-blog.tistory.com
📝 멘토링 8주차 ( 02월 14일 ~ 02월 20일 )
인수테스트와 TDD 2단계 완료 및 3단계
- 연관관계의 id를 직접 비교하기보다 연관관계의 객체에게 메세지 보내기
// NOT GOOD Member.getId() == id // OK Member.isIdEqual(id) public class Member{ public boolean isIdEqual(Integer id){ return this.id == id ; } }
📝 멘토링 9주차 ( 02월 21일 ~ 02월 27일 )
인수테스트와 TDD 4단계
- 비로그인에 대한 처리 (Controller에서AuthenticationPrincipal 어노테이션의 옵션 required값 설정하기)
// @AuthenticationPrincipal required 옵션 만들기 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface AuthenticationPrincipal { boolean required() default true; } public class AuthenticationPrincipalArgumentResolver implements HandlerMethodArgumentResolver { //... @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { String credentials = AuthorizationExtractor.extract(webRequest.getNativeRequest(HttpServletRequest.class)); boolean required = parameter.getParameterAnnotation(AuthenticationPrincipal.class).required(); return authService.findMemberByToken(credentials, required); } } // 사용 @GetMapping public ResponseEntity<PathResponse> findShortestPath(@AuthenticationPrincipal(required = false) LoginMember loginMember, @RequestParam("source") Long source, @RequestParam("target") Long target) { return ResponseEntity.ok(pathService.findShortestPath(loginMember, source, target)); }
- service에서 다른 service 의 메서드 활용하기 : 중복되는 작성되는 메서드를 다른 서비스에서 사용할 수 있도록 설정하기
https://dodop-blog.tistory.com/303
Service 계층에서 다른 Service 혹은 Repository
리팩토링을 진행하던 중 Service에서 Repsitory를 직접적으로 의존하여 데이터를 찾다보니 연관관계의 데이터를 findBy 객체 찾기가 반복되게 되었다. 한 곳에 findBy를 구현하고 이 함수를 다른 Service
dodop-blog.tistory.com
- 테스트 어플리케이션 컨텍스트 : Mock 객체의 경우 생성비용이 많이 들기 때문에 생성된 Mock은 재사용하도록 하여 생성 비용을 줄인다.
- CascadeType.REMOVE vs orpahnRemoval = true
https://dodop-blog.tistory.com/295
CacadeType.REMOVE 와 orphanRemoval = true의 차이
프로젝트 리팩토링을 진행하면서 연관관계의 데이터(1:N 부모 자식)에 옵션을 넣어줄 때 자식 데이터 삭제시 옵션을 주다가 궁금증이 생겨 찾아보게 되었다. CascadeType.REMOVE(부모 삭제시 자식 삭
dodop-blog.tistory.com
- cascade=”all-delete-orphan” was no longer referenced by the owning entity instance 오류
https://dodop-blog.tistory.com/294
a collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance 발생 시
연관관계를 가지고 있는 한 객체를 바꾸려고 할 때 다음과 같은 오류가 발생하였다. a collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance 원인..
dodop-blog.tistory.com
- @ParameterizedTest 사용시 java.lang.NoSuchMethodException 예외
https://dodop-blog.tistory.com/292
@ParameterizedTest사용할 때 java.lang.NoSuchMethodException 발생 시
@ParameterizedTest를 사용하여 여러가지 경우를 테스트 하려고 할 때 java.lang.NoSuchMethodException 예외가 발생하게 되었다. (cannot invoke non-static-method) 원인 @ParameterizedTest @MethodSource("lot..
dodop-blog.tistory.com
🌱 멘토링 2개월차 학습 후기
이번달에는 인수테스트에 대해서 학습하고 인수테스트와 TDD미션을 진행하게 되었다. 인수테스트가 무엇이며 어떻게 작성해야하는지 모르고 있었기 때문에 미션을 진행하면서 이에 관련하여 자세히 학습 할 수 있있다. 지난달 월간 멘토링 내용과 비교해보니, PR보낸 횟수, 블로그 글 작성수가 줄어든 것을 보며 학습량이 매우 부족했고 진행속도도 느려진 것을 확인할 수 있었다. 추가적으로 인수테스트와 관련하여 학습한 내용도 블로그에 작성해야 한다. ( 나태지옥 ! ) 😣
'학습로그' 카테고리의 다른 글
월간 멘토링 - 4개월차 (0) 2022.04.28 월간 멘토링 - 3개월차 (0) 2022.04.28 2개월차 모의면접 (0) 2022.03.20 월간 멘토링 - 1개월차 (0) 2022.02.28 프로젝트 공방 멘토링 (Feat. NextStep) (0) 2022.02.28