HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🚀
Random Bit Flip
/
✈️
[2기 - 아만드] 4주차 RBF
✈️

[2기 - 아만드] 4주차 RBF

주차
SpringBoot Part2
회고일
Apr 15, 2022
참여자
멘토
Property
tag
한 주간 배우면서 새로 알게된 개념이나 잘 못 알았던 개념을 서로 나누어 보아요.
 
유민환
  • @CsvSource에서 Enum 받기
    • @DisplayName("해당하는 MenuType을 반환한다.") @ParameterizedTest @CsvSource(value = {"create,CREATE", "list,LIST", "exit,EXIT"}) void of_MenuCommand_ReturnMenuType(String command, MenuType menuType) throws WrongInputMenuException { assertThat(MenuType.of(command)).isEqualTo(menuType); }
 
  • logback의 filter 기능
    • Logback filter (slf4j)
      logback filter type LevelFilter 정확한 레벨 일치를 기반으로 이벤트를 필터링 한다. 이벤트 레벨이 구성된 레벨이 같으면 onMatch onMismatch 특성의 구성에 따라 필터가 이벤트를 승인하거나 거부 하게 할 수..
      Logback filter (slf4j)
      https://mycup.tistory.com/276
      Logback filter (slf4j)
 
  • 테스트 코드에서는 하드코딩을 하자
    • 테스트 코드에서는 소프트 코딩 즉, 도메인 로직을 사용하지 않는 것이 좋다.
    • 검증부 (assert / expect)는 하드코딩한다
      최근 코드리뷰를 하다가 자주 지적하던 내용이 있어, 정리하게 되었다. 요즘 팀 분들이 가장 많이 하는 실수가 바로 검증부에 도메인 로직이 추가되는 것 이다. 이를테면 다음과 같은 구현 클래스가 있다고 해보자.
      검증부 (assert / expect)는 하드코딩한다
      https://jojoldu.tistory.com/615?category=1036934
      검증부 (assert / expect)는 하드코딩한다
 
  • Mockito를 무작정 사용하는 것이 맞을까?
    • 무분별하게 테스트 더블을 활용하지 말고 실제 객체를 사용하되 어려운 경우 테스트 더블을 사용하는 것이 좋아 보입니다.
    • Stub 을 이용한 Service 계층 단위 테스트 하기
      간혹 Service 계층을 항상 통합 테스트로만 작성하는 경우를 보게됩니다. 모든 Service를 통합 테스트 혹은 E2E 테스트로만 검증하기 보다는 상황에 따라 적절한 Stub 을 사용하여 단위 테스트로 작성한다면 전체 테스트 속도 향상에 도움이 됩니다. 몇가지 예제를 통해 Stub을 사용하는 단위 테스트 코드를 보겠습니다. 첫번째 예제로 다음과 같은 서비스 로직에 대한 단위 테스트입니다.
      Stub 을 이용한 Service 계층 단위 테스트 하기
      https://jojoldu.tistory.com/637?category=1036934
      Stub 을 이용한 Service 계층 단위 테스트 하기
      Mockito, 이대로 괜찮은가?
      ( Tasty mocking framework for unit tests in Java! ) Mock 객체와 Mockito에 대한 설명은 스티치의 "Test Double을 알아보자"와 "Mockito와 BDDMockito는 뭐가 다를까?"를, 더 자세한 내용은 공식문서 를 읽어보길 바란다. 간단하게 말하자면, Mockito는 단위 테스트를 위한 mocking 프레임워크이다. 생성한 Mock 객체의 특정 메소드에 대한 입력-결과값을 미리 지정하거나, 동작 여부를 검증할 수 있다.
      Mockito, 이대로 괜찮은가?
      https://tecoble.techcourse.co.kr/post/2020-10-16-is-ok-mockito/
      Mockito, 이대로 괜찮은가?
 
 
박우진
  • Connection Pool은 커넥션 객체를 일정량 모아둔 pool에 생성해두고 계속 재활용하는 방식이다
  • 테스트 코드에서 @ValueSource, @EnumSource를 사용하면 지정한 배열값으로 테스트가 가능하다.
  • @TestInstace를 테스트코드에서 사용하면 테스트 인스턴스의 라이프 사이클을 설정할 수 있다.
  • 트랜잭션 격리수준과 전파수준
  • 스프링에서 어노테이션을 통해 트랜잭션을 설정해주려면 @Transactional과 함께 @EnableTrasactionManagement를 사용해줘야 적용이 된다.
  • 커스텁 익셉션은 언제써야할까?
    • 표준 예외로도 충분히 명시가 가능할 경우처리가 가능한 경우면 표준 예외를 사용하고 표준 예외로 명시가 제대로 안되면 커스텀 익셉션을 쓰라는것 같습니다. 상세한 예외 정보 제공 등..
    • custom exception을 언제 써야 할까?
      우아한테크코스의 두 크루인 오렌지와 우가 싸우고 있다. 왜 싸우고 있는지 알아보러 가볼까? 오렌지 : 아니 굳이 사용자 정의 예외 안 써도 됩니다!! 우 : 아닙니다!! 써야 합니다!!! 사용자 정의 예외(Custom Exception) 에 대한 둘의 의견이 좁혀지지 않는다. 각자의 주장을 더 자세히 들어보자! 커스텀 예외의 장점으로 예외클래스의 이름만으로 어떤 예외인지 알아보기 쉽다는 점을 꼽는다.
      custom exception을 언제 써야 할까?
      https://tecoble.techcourse.co.kr/post/2020-08-17-custom-exception/
      custom exception을 언제 써야 할까?
 
김수빈
 
 
강용수
Resouce로 파일 읽기
  • application.getResource("classpath:file_name")
    • 스프링 부트가 시작되면 resources 폴더의 파일을 읽는다
    • 그 후 target 폴더에 동일한 파일이 생겨 애플리케이션이 실행되는 동안 target폴더의 파일을 계속 읽게 된다.
    • resources폴더의 파일이 수정되더라도 수정 부분이 반영되지 못함.
  • application.getResource("file:"+절대경로)
    • 절대 경로를 지정하면서 수정된 파일을 읽을 수 있게 되었음.
 
김재욱