미션 예제 코드에 @DirtiesContext라는 어노테이션을 사용하던 중 정확하게 어떤 어노테이션인지 알고자 정리한다. 기본적으로, 스프링 테스트에서는 ApplicationContext를 캐싱하여, 기존의 Context를 재활용한다.따라서 DB 작업이 수행된 테스트가 존재할 때, 테스트 간에 격리가 되지 않고 테스트 간에 영향을 받게 될 수도 있는 것이다.이럴 때 사용할 수 있는 것이 바로 @DirtiesContext 어노테이션이다. @DirtiesContext 너는 누구냐@DirtiesContext는 테스트 실행 중, Spring ApplicationContext가 Dirty 상태가 된다면 컨텍스트를 닫아버리는 것을 말한다.즉, 애플리케이션 컨텍스트가 더티로 표시되면 테스트 프레임워크의 캐시에서 제거..
Keep[기존 회고 반영] 레벨 1의 액션 플랜을 지키고자 1주차 회고를 작성한 점[페어 프로그래밍] 학습 테스트에 충분한 시간을 투자한 점[페어 프로그래밍] 모르는 부분이나 애매한 개념들에 대해 짚고 넘어간 점[리뷰 제출] 미리 참고할 부분을 코멘트로 작성하여, 불필요한 리뷰 사이클을 줄인 점[리뷰 제출] 레벨1의 코드 리뷰를 통해 배웠던 마인드셋을 적용하려고 한 점현구막의 리뷰를 통해 동료 개발자의 관점으로 보고자 하는 것을 이번 리뷰에도 적용[미션 전체] 기존에 사용법만 익혔던 어노테이션이나 원리 등에 대해 깊게 고민하려고 한 점Problem[페어 프로그래밍] 페어와 함께 중요하지 않는 것에 매몰되었다.레벨1을 통해 다른 페어들과 개발을 하면서 작은 것이라도 넘어가지 않는 태도(?)에 익숙해졌는데,..
난 레벨 1 동안 어떤 경험들을 했을까?1. 객체지향에 입문하다.우테코 내에서, 그리고 여러 글을 통해 “부끄지만 2년 넘게 자바를 사용하면서도 객체지향에 대해 깊게 고민해본적이 없다”는 말을 했었다.레벨1 동안 가장 많이 성장한 점은 객체지향을 바라보는 태도의 변화이다.그동안은 객체를 그냥 ”클래스의 인스턴스 그뿐”이라고만 생각했었고, 객체지향은 “자바의 패러다임”이라는 이론적인 단어로만 생각했었다.4번의 페어프로그래밍을 진행하고, 객사오를 읽으면서 객체가 무엇이며, 객체지향을 위해 어떻게 바라봐야 하는지에 대한 나만의 기준을 세워나가고 있다. 사실 레벨 1의 마지막 체스 미션을 하면서 한번 크게 위기가 왔었다. 미션을 진행하면서 부정적인 생각들만 떠올랐기 때문이다.“웹 개발을 할 때 객체지향이 직접적..
1단계 방탈출 예약 관리 미션의 제공된 테스트 코드를 보면,클래스단에 @SpringBootTest가 붙여져 있고 RestAssured 라이브러리를 통해 테스트 코드를 작성하고 있습니다. 오늘은 테스트 포트를 변경하려다 삽질을 해본 이야기에 대해 작성해보겠습니다.👀 @SpringBootTest란Spring Boot에서 Spring Boot 기능이 필요할 때 표준 스프링 테스트 @ContextConfiguration 어노테이션의 대안으로 사용할 수 있는 어노테이션입니다.이 어노테이션은 Spring을 통해 테스트에 사용되는 ApplicationContext를 생성하는 방식으로 작동합니다.다시 말해 스프링 테스트를 위해 ApplicationContext를 생성합니다.🤔 webEnvironment 속성값@Sp..
🏨 수업 피드백1. cache vs pool두 개념의 차이점은 미묘하게 다르다. 구분하자.cache미리 만들어두기pool만든 게 있으면 꺼내쓰기/없으면 만들어 넣어두기고로 블랙잭에서 내가 활용한 개념은 cache이다(게임에 사용될 카드들을 미리 생성해 놓았기 때문) 2. 클래스 파일의 수클래스 파일이 많아지면 경계하는 의견이 있다. 보통 클래스 파일이 많아지면 내부 코드를 다 확인하는 등 유지보수가 힘들어질 것이라고 생각하기 때문이다. 하지만 객체를 잘 분리하면 이런 일이 없다. 내부 코드를 확인한다는 것 자체가 그 코드가 내가 예상하는 것처럼 행동할 거라는 확신이 없어서라고도 볼 수 있기 때문이다. 따라서 메서드 명으로 역할을 정확히 드러내서 시그니처만 보고도 이해할 수 있도록 하는 것이 중요하다. ..
약 한달가량 늦은 업로드...그때 그때 업로드해야겠다 싶어도 미루게 되버리는 것 같다... Keep추가된 요구사항을 지키기 위해 노력한 것객사오 책에서 배운 책임이라는 개념을 적용하기 위해 노력한 것Problem도메인에 대한 이해가 부족하여 전체적인 미션 진행이 어려웠다.페어 프로그래밍을 할 때 짝의 속도를 따라가기 버거웠다.최대한 이해를 해보려고 질문도 하려고 했지만 나때문에 속도가 느려지는 것 같아 그냥 넘어갔다.중간부터는 이해가 안돼서 프로그래머가 아닌 따라치기만 하는 코더였다.입출력 요구사항을 다르게 이해하고 구현했다.시간이 많이 소요됐다.처음에 책임을 추출(?)하려고 했는데 잘 감이 오지는 않아서 어려웠다.처음 강의를 조금 놓치다가 보니 점점 강의 시간에 잘 집중하지 못했던 것 같다.try이번에..
🫡 구현 시 집중한 부분1. 함수형 프로그래밍함수형 프로그래밍이란, 작업을 어떻게 수행할 것인지(즉 로직에 집중하는 것이) 아니라 무엇을 할 것인지에 집중하는 방법구체적인 작업 방식은 라이브러리가 알아서 처리하고, 사용자는 라이브러리가 제공하는 인터페이스를 구현하는 것만으로도 원하는 작업을 수행할 수 있다. 자바에서는 익명 클래스, 함수형 인터페이스, 람다, 스트림API 등의 문법을 사용할 수 있다. 선언형 프로그래밍과 명령어 프로그래밍의 차이점을 이론으로만 들었을 때는 잘 와닺지 않았었는데,For문을 사용하여 명령형으로 사용한 코드와 Stream을 사용하여 선언형으로 작성한 코드를 비교해보니 차이점을 확 느낄 수 있었다. 함수형 인터페이스와 스트림 API를 최대한 활용하고자 하였다.👍 이번 미션에..
사다리 타기 미션 🫡 구현 시 집중한 부분 1. TDD 테스트를 먼저 작성하고 기능 구현 후 리팩토링하는 과정 TDD는 사이클을 반복하여 구현하는 것을 말한다. [개인적으로 느낀 장점] 그동안 나는 설계 단계에서 도출한 객체와 구조를 최대한 바꾸지 않도록 하려고 고민했었지만 스스로 스킬이 부족하다는 생각에 빠져있었는데, TDD는 초기 설계에 집착할 필요가 없어 심리적으로 편했던 것 같다. 정말 요구사항에만 있는 행위들만 테스트하고, 구현하기 때문에 불필요한 행위들이 추가적으로 구현되지 않았다. 2. 제어할 수 없는 부분 테스트 |-----|-----|-----| 처음 사다리를 구현할 때, 하나의 세로 줄을 Line이라는 객체를 통해 구현하고 객체 안에서 경로가 있는지 없는지를 나타내는 List를 Rand..
자동차 경주 미션 🫡 구현 시 집중한 부분 1. 단위 테스트 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트 각 객체가 가지는 책임에 대해 테스트 하도록 함 2. MVC 패턴 domain 패키지 핵심 비지니스 로직을 가지는 객체 view 패키지 UI 관련한 객체 controller 패키지 view와 domain의 연결 객체 주의 view 패키지의 객체가 domain 패키지 객체에 의존할 수 있지만, domain 패키지의 객체는 view 패키지 객체에 의존하지 않도록 구현해야 함 👥 짝(페어)과의 공유한 내용 1. 재귀를 통한 재입력 처음 구현 시, 사용자의 입력값에 따라 에러가 발생했을 경우 재입력을 받도록 하였다. 나는 보통 재귀를 통해 재입력을 받는 것도록 구현을 했..
1단계 팀원들과 함께 각자가 받은 리뷰에 대해 얘기를 하다가, 일급 컬렉션에 대한 얘기가 나왔다. 나와 페어는 경주에 참여하는 자동차들의 모음인 List를 멤버변수로 담는 CarGroup 클래스를 만들고 그룹에 차를 추가하거나, 우승자를 구하는 메서드를 작성했는데, 사실 일급 컬렉션인지도 모르고 일급 컬렉션을 사용한 샘이다. 따라서, 일급 컬렉션이 무엇이고 어떻게 나는 활용했는지를 알아보고자 작성한다. 정의 일급 컬렉션이란, 컬렉션을 Wrapping한 클래스로, 반드시 컬렉션외의 다른 멤버 변수가 없어야 한다. public class CarGroup { private final List cars = new ArrayList(); public void add(Car car) { cars.add(car); ..