NEXT STEP26 [TIL] 일일 회고 2022/07/25 요즘 한 일 1. ATDD 리뷰 정리 2차, 3차 PR에 대한 리뷰를 정리하였다. 부족한 부분이야 항상 많지만, 다양한 주제로 리뷰어와 예기할 수 있어 좋다! https://blogshine.tistory.com/479 [Review] ATDD 2주차 2차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! https://github.com/next-step/atdd-subway-path/pull/299 2단계 - 지하철 구간 추가 리팩터링 by zbqmgldjfh · Pull Request #299 · next-step/atdd-subway-pat.. blogshine.tistory.com https://blogshine.tistory.com/482 [Review] ATDD 2주차 3차 PR 권승철 .. NEXT STEP/회고록 2022. 7. 25. [Review] ATDD 2주차 3차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) CustomException의 사용 이번에 CustomException을 좀더 세분화 하기위해, 기존의 SectionException을 SectionsAdd, SectionsDelete 별로 나눠 CustomException을 구현하게 되었습니다. 그보다 더 세부적인 내용들은 예외 안에서 메시지로 구별하였습니다! 우선 모든 예외가 공통적으로 상속받을 BusinessException을 구현하였습니다. 해당 class 안에는 HttpStatus를 저장 할 수 있습니다. public class BusinessException extends RuntimeException { private final HttpStatus httpStatus; pu.. NEXT STEP/Review 정리 2022. 7. 25. [Review] ATDD 2주차 2차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 일급 컬렉션에 대한 재질문 지난번 대화를 통해 sections을 방어적 복사를 해도, sections에 담긴 원소인 section은 변경의 위험이 있음을 인지하게 되었습니다. 따라서 리뷰어님의 의견을 수용하여 Sections.getSections() 메서드는 제거하였지만, "순서대로 역을 조회하는 기능" 때문에 어차피 역들은 변경의 위험에 있을 수 밖에 없지 않나? 란 생각이 들었습니다. 일급컬렉션은 컬렉션의 불변성만 보장하면 됐던 것 아닐까? 란 생각도 들구요 ㅎㅎ 변경 위험의 노출 정도를 줄였다 생각하면 될까요? 이에 대한 의견이 궁금합니다!! 답변: 1-2) 구간 길이 검증의 불가능 미션의 요구사항 중 다음과 같은 사항이 있습니다... NEXT STEP/Review 정리 2022. 7. 22. [TIL] 일일 회고 2022/07/20 요즘 한 일 1. ATDD 학습 정리하기 https://blogshine.tistory.com/473 [ATDD] 인수 테스트 격리하기 이번 시간 들었던 재미있었던 내용 중 하나로 인수 테스트의 격리 에 대한 내용이 있었다. 재미있었던 내용이기에 간략하게 정리해본다. 1. 인수 테스트의 격리 1-1) Transactional 의 사용? 사실 내가 blogshine.tistory.com https://blogshine.tistory.com/474 [ATDD] 단위 테스트 이번 글에서는 단위 테스트에 대하여 고민해보는 시간이다. 1. 단위 테스트 보통 단위 테스트라는 단어를 들으면 다음과 같은 그림이 떠오른다. 각각의 테스트가 Production Code의 부분 부분들을 검 blogshine.tistory... NEXT STEP/회고록 2022. 7. 20. [Review] ATDD 2주차 1차 PR 권승청 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Section의 생성을 어디서? 예를 들어 다음과 같이 section을 추가하는 메서드가 있다고 해봅시다! LineService 내부 @Transactional public void addSection(Long lineId, SectionRequest sectionRequest) { Station upStation = stationService.findById(sectionRequest.getUpStationId()); Station downStation = stationService.findById(sectionRequest.getDownStationId()); Line line = lineRepository.findById(lineI.. NEXT STEP/Review 정리 2022. 7. 19. [ATDD] 단위 테스트 이번 글에서는 단위 테스트에 대하여 고민해보는 시간이다. 1. 단위 테스트 보통 단위 테스트라는 단어를 들으면 다음과 같은 그림이 떠오른다. 각각의 테스트가 Production Code의 부분 부분들을 검증하고 있다. 1) 작은 코드 단위를 검증하며 2) 빠르게 수행 가능하고 3) 격리된 방식으로 처리된다면 단위테스트라 할 수 있을 것이다. (여기서 격리된 방식의 의미가 중요한데, 이는 뒤에서 알아보자!) 이쯤 되서 다음 코드를 살펴보자! 위 테스트는 단위 테스트 일까? 아닐까? 2가지 생각이 가능하다. 1) Station과 Line의 기능 모두를 검증하는 테스트는 단위 테스트가 아니라 통합 테스트 아닌가? 2) 여러 객체가 사용되었지만 구간 추가라는 하나의 기능을 검증하는 테스트이니 단위 테스트 아닌가.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 16. [ATDD] 인수 테스트 격리하기 이번 시간 들었던 재미있었던 내용 중 하나로 인수 테스트의 격리 에 대한 내용이 있었다. 재미있었던 내용이기에 간략하게 정리해본다. 1. 인수 테스트의 격리 1-1) Transactional 의 사용? 사실 내가 떠오른 맨 처음 방식이기도 하다. 어떤 테스트 코드 A, B, C 가 있을 때, 각각의 테스트 코드가 다른 테스트의 영향을 받지 않으려면 DB 또한 각각이 clean한 상태에서 실행되어야 한다. 하지만 우리의 인수테스트에서는 Transactional을 사용할 수가 없다... 아니, 정확히는 사용할 수 없는것은 아니지만 사용해봤자 의미가 없다. 모든 인수테스트에서 공통적으로 상속하는 Acceptance Class는 다음과 같다. @SpringBootTest(webEnvironment = Sprin.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 16. [TIL] 일일 회고 2022/07/15 요즘 한 일 1. JUnit 구현하기 요즘 테스트 코드를 작성할 일이 많은 상황인데, 예전에 읽다가 못읽은 켄트 백의 "테스트 주도 개발" 책을 다시 읽을 여유가 생겼다. 따라서 1장과 2장까지 최근 읽게 되었다. 1장의 환율 계산 내용은 TDD의 사상을 알려주려 하는 부분은데, 몸에 적응된 방식의 진행이라 큰 어려움이 없었지만, 2장 xUnit 을 Python으로 구현하는 단원은 진짜 어렵다 생각되었다. 처음에는 단순하게 Python 코드만 읽어가면서 넘어갔는데, 이게 코드만 보면서 하다보니 어느순간부터 이해가 되지 않았다... 따라서 그냥 "Java로 구현해버리자!" 라는 원대한 뜻을 가지고 직접 구현하게 되었다. https://blogshine.tistory.com/469 [TDD] JUnit 만들.. NEXT STEP/회고록 2022. 7. 15. [Review] ATDD 1주차 3차 PR 송용주 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 @BeforeEach void init() { upStationId = 지하철역_생성("강남역").jsonPath().getLong("id"); downStationId = 지하철역_생성("건대입구역").jsonPath().getLong("id"); } @Test @DisplayName("정상적으로 역을 생성하여 기존 노선 끝에 구간을 추가한다") public void addSection() { // given Long lineId = 지하철_노선_생성("2호선", "bg-blue-600", upStationId, downStationId, 10).jsonPath().getLong("id"); Long stationId = 지하철역_생성("성수역.. NEXT STEP/Review 정리 2022. 7. 15. [TIL] 일일 회고 2022/07/10 요즘 한 일 1. NextStep ATDD 과정 진행중~ https://blogshine.tistory.com/463 [ATDD] 인수 테스트 보통 xxx 주도 개발 시리즈에서 가장 유명한 개발 방법론이 TDD (Test Driven Development)이다. 나도 Console 기반의 어플리케이션을 만드는 과정에서는 시간만 된다면 TDD를 거의 의식적으로 수련하려 노 blogshine.tistory.com 관심있었던 교육 기관중 하나인 NextStep 에서 진행하는 ATDD 과정에 합류하게 되었다. 평상시 TDD 자체에도 관심이 많아서, 코드스쿼드 에서 프로젝트를 진행할때 조금이라도 테스트코드를 작성하려 노력했었다. 그렇게 어느정도 몇개의 프로젝트에서 혼자 TDD를 진행하다 보니, 테스팅을 하는 방식.. NEXT STEP/회고록 2022. 7. 10. [Review] ATDD 1주차 2차 PR 송용주 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Dto -> Domain 변환의 장소는? 조금 인수테스트 와는 상관없는 Production Code에 대한 부분이기는 한데... 저의 Line 이라는 Entity 안에는 다음과 같이 edit 이라는 메서드가 구현되어 있습니다. public void edit(Line line) { if (line.getName() != null && !line.getName().isBlank()) { name = line.getName(); } if (line.getColor() != null && !line.getColor().isBlank()) { color = line.getColor(); } if (line.getUpStationId() != nu.. NEXT STEP/Review 정리 2022. 7. 10. [ATDD] 인수 테스트 만들기 우선 인스테스트를 만들기 전, 인수 테스트를 블랙 박스 테스트의 성격을 가지고 있다는점을 알아두자. 내부의 동작을 모르는 상태에서 결과만 테스트 하는 것을 블랙 박스 테스트 라고 말한다. 테스트에서는 Production code에 의존하지 않는다. 요청을 통해 기능을 검증하도록 노력하고, 직접 요청을 통해서 초기화 데이터도 만든다. ▶ RestAssured 사용이유 Client 로는 RestAssured 객체를 사용하게 된다. 이는 Client가 Server에 요청을 보내듯, test 환경에서 test 메서드 안에서 Client 역할을 해준다. 1. 인수 테스트 만들기 크게 3가지 로 진행된다. 1) 인수 조건 작성 2) 인수 테스트 작성 3) 기능 구현 우리는 지하철 역을 만든다고 생각해보자. 1-1).. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 8. 이전 1 2 3 다음