회고
Facts(사실, 객관)
- 3-1강 3-2강 수강 및 코드 반영 완료
- 테스트 코드의 중복을 제거하기 위한 시도 수행
Feelings(느낌, 주관)
- 유난히 많은 삽질을 했다.
- 어짜피 겪어야할 삽질이라면 빨리 겪는게 났다고 생각한다.
- 무의미한 시간낭비가 아니길 바랄뿐이다.
- 삽질 없이 해결할수만 있다면 더 좋았겠지만 말이다.
Findings(배운 점)
- 삽질로 시간낭비를 줄이는 방법
- 이미 알고 있는 사람에게서 배우는게 더 빠르다.
- 구글에 검색하는것보다 공식문서를 확인하는게 더 빠르다.
Affirmation(자기 선언)
04:30 ~ 05:20
Facts(사실, 객관)
- 코드리뷰 피드백 반영
- 3-1강 수강 중
- javadoc을 장황하게 작성한다는 지적을 받았다.
Feelings(느낌, 주관)
Findings(배운 점)
Affirmation(자기 선언)
05:50 ~ 06:40
Facts(사실, 객관)
Feelings(느낌, 주관)
- 혼자서 삽질하면서 터득한 내용들이 모두 강의에 있었다.
Findings(배운 점)
- 혼자서 삽질하는 것보다 이미 알고 있는 사람에게서 배우는 게 더 빠르다.
Affirmation(자기 선언)
- 나는 항상 가장 효율적인 학습방식을 선택하는 사람이다.
06:41 ~ 07:31
Facts(사실, 객관)
- HelloController e2e 테스트 작성
- @SpringBootTest와 @WebMvcTest의 차이 정리
- @SpringBootTest 사용 시 테스트 실행 시간 측정
- @WebMvcTest 사용 시 테스트 실행 시간 측정
Feelings(느낌, 주관)
- 어노테이션 사용 여부에 따라 테스트 실행 시간이 달라진다는 사실이 흥미롭다.
- 성능 측정하는 것도 나름 재미있는 것 같다.
- 기회가 된다면 성능 측정에 대해 배워보고 싶다.
Findings(배운 점)
- @WebMvcTest와 @SpringBootTest의 차이(참고)
- @SpringBootTest
- 테스트 시 어플리케이션 전체를 실행(=slicing 사용하지 않음)
- 컴포넌트 스캔을 실행하지 않음
- @AutoConfigureMockMvc와 같이 사용
- @WebMvcTest
- 테스트 시 어플리케이션의 일부분만 실행(=slicing 사용)
- 더 빠르다(측정 시 4초 정도 더 빠르게 나온다)
- 오직 컨트롤러만 스캔
- 테스트하는 컨트롤러가 의존성을 가지고 있는 경우, 따로 설정해주어야 함
Affirmation(자기 선언)
20:00 ~ 20:50
Facts(사실, 객관)
- 테스트 코드를 재활용 하려는 시도
- 중복 코드를 추상 클래스로 만들어 상속받기로 결정
- @Nested와 @DisplayName 재사용 방법 검색
- @Nested @DisplayName은 상속받을 수 없는 것 확인
- 테스트 코드를 상속의 문제점 확인(참고)
Feelings(느낌, 주관)
- 추상 클래스에만 @Nested @DisplayName을 선언하고, 사용하는 방법을 찾기 위해 엄청난 시간을 소모했다.
- 정말 많은 키워드로 검색을 했지만, 얻을 수 있는 것이 없었다.
- 결국 공식사이트에서 @Nested, @DisplayName은 상속 받을 수 없다는 사실을 확인하였다.
- 공식문서가 있는 이유를 처음으로 느꼈다.
- 나는 왜 공식문서를 보는 것을 주저했을까?
- 무엇이 문제인지 모르는 상황에서, 무작정 공식문서를 읽어나가는 것이 비효율적이라고 생각하였다.
- 하지만, 공식문서를 아예 확인하지 않는 것도 문제라고 생각한다.
- 먼저 공식문서를 확인하고, 내용을 찾을 수 없는 경우 빠르게 탈주하는 것을 전략으로 삼아야겠다.
Findings(배운 점)
- 테스트 코드 재활용을 위해 상속을 사용하는것의 문제점
- 테스트 클래스를 상속받는 것은 성능상의 문제를 발생시킨다.
- JUnit의 테스트 실행 과정
- 메소드에 선언된 모든 @BeforeClass 어노테이션을 찾는 작업을 실행한다.
- 상속관계에 있는 모든 클래스를 확인하여 @BeforeClass를 가지고 있는지 확인한다.
- 이러한 작업을 java.lang.Object에 도달할 때까지 반복한다.
- 부모 클래스부터 자식 클래스 순서로 모든 @BeforeClass 어노테이션이 선언된 메소드를 실행한다.
- 1번 2번 작업을 @Before, @Test, @After, @AfterClass에서 반복한다.
- 밀리세컨 단위로 일어나는 일이지만, 테스트 케이스가 많아지면 큰 영향을 미친다.
- 테스트 코드 가독성을 떨어트린다.
- 테스트 코드의 목적
- 테스트는 코드의 작동 방식을 기록하는 문서이다.
- 테스트는 코드가 제대로 작동하는것을 보장한다.
- 테스트의 가독성이 좋아야하는 이유
- 테스트를 통해 코드의 작동 방식을 이해할 수 있다.
- 실패한 테스트의 원인을 빠르게 확인할 수 있다.
- 먼저 공식문서를 확인하자.
Affirmation(자기 선언)
- 나는 먼저 공식문서를 확인하는 사람이다.
- 나는 가독성 좋은 테스트를 작성하는 사람이다.