블로그

레이

[인프런 워밍업 클럽 4기 - BE 클린 코드 & 테스트 코드] 4주차 발자국 👣

👣 4주차 발자국 💻 강의 수강👩🏻‍💻 학습 내용 요약Test DoubleDummy, Fake, Stub, Spy, MockMockito, BDDMockito@Mock, @MockBean, @Spy, @SpyBean, @InjectMockTest FixtureParameterized Test, Dynamic Test테스트 환경 통합private 메서드의 테스트, 테스트에서만 필요한 메소드 🤔 학습 회고이번 주 또한 저번 주처럼 해커톤과 이력서 작성으로 강의를 나중에 몰아서 듣게 되어 아쉬운 한 주였습니다..완강을 하긴 했지만 무조건 복습해야 체화할 수 있겠다는 생각이 드는 미션과 중간 점검이었습니다. 🎯 다음 주 학습 목표중간 점검에서 말씀해 주신 부분을 체크하면서 미션 다시 해보기  ✉ 미션💭 미션 해결 과정Day 16 미션Layered Architecture 구조에서 레이어마다 어떤 특징이 있는지, 어떻게 테스트하면 좋을지 저만의 언어로 정리해보기 위해서 강의 내용을 복습하면서 진행하였습니다.  Day 18 미션@Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 의 차이를 정리하기 위해서 강의를 복습하고, 복습하면서 궁금해진 내용도 찾아가며 진행하였습니다.  🤔 미션 회고역시 늘 느끼는 건데 강의를 듣고 저만의 언어로 정리하는 것이 생각보다 쉽지 않습니다. 그건 제가 강의를 체화하지 못했다는 의미 같기도 해서 복습으로 이해해야겠다고 느끼게 됩니다.2차 중간 점검에서 Day 18 미션의 핵심은 중복 제거가 아닌 '도메인'이라고 하셨습니다. 도메인에 대해서 다시 한 번 생각해보았습니다. 테스트하려는 목적 대상이 무엇인지 항상 생각하면서 진행해야겠습니다.   👨🏻‍💻 강의 출처Practical Testing: 실용적인 테스트 가이드 

워밍업클럽백엔드소프트웨어_테스트junit5SpringJPAMockito

레이

[인프런 워밍업 클럽 4기 - BE 클린 코드 & 테스트 코드] 2주차 발자국 👣

👣 2주차 발자국 💻 강의 수강👩🏻‍💻 학습 내용 요약주석에는 코드로 표현할 수 없는 우리의 의사 결정 과정과 도메인 로직을 작성하자.주석도 관리해 줘야 하는 문서다. 업데이트를 잊지 말자.변수는 사용하는 순서대로 배치하자.메서드 순서: 상태 변경 >> 판별 >= 조회패키지도 정보를 제공할 수 있으므로, 적당하게 쪼개서 관리해야 한다.코드를 읽는 것은 도메인 지식을 늘리는 것이 목표다.은탄환은 없다. 유연한 사람이 되자.잘 작성한 테스트 코드는 팀 내 공유 자원으로 좋은 자산이 된다. 🤔 학습 회고Readable Code 강의는 듣고 이해하는 것만으로도 어려워서 시간이 오래 소요되었다...평소 테스트 코드에 대해 궁금해서 그런지, Practical Testing 강의가 재밌다~리팩토링 미션이 너무 어려웠다... 🎯 다음 주 학습 목표Readable Code 강의 복습!!  ✉ 미션💭 미션 해결 과정Day 7 미션중복된 부분이 많은 것 같아서 중복 제거를 진행하였다.추상화 레벨을 맞추기 위해서 추상화를 진행하였다.강의 시간에 알려주신 포인트를 최대한 반영해 보았다.   🤔 미션 회고완성도가 낮다고 생각은 했지만, 강의와 중간 점검을 듣고 나니 부족한 점이 많이 보였다.깔끔하지 않은 순서로 리팩토링했던 것 같다.어떻게 진행해야 할지 모르겠어서 코드를 계속 바라봤다...  👨🏻‍💻 강의 출처Readable Code: 읽기 좋은 코드를 작성하는 사고법 Practical Testing: 실용적인 테스트 가이드 

백엔드워밍업클럽백엔드clean-code객체지향리팩토링소프트웨어_테스트junit5

레이

[워밍업 클럽 4기 - BE 클린 코드 & 테스트 코드] Day 18 미션

🎯 Day 18 미션 1⃣번 미션@Mock단위 테스트에서 사용할 가짜 객체를 직접 생성한다.@MockBean mock 객체를 생성하고, 스프링 컨텍스트에 직접 등록한다.@Spy실제 객체를 기반으로, 일부를 stub 할 수 있다.@SpyBeanspy 객체를 생성하고, 스프링 컨텍스트에 직접 등록한다.@InjectMocks 테스트 클래스에 mock이나 spy 객체들을 의존성 주입해준다.  2⃣번 미션댓글 작성과 수정에 대해 테스트할 때, 사용자와 게시물은 무조건 필요하므로 @BeforEach에 넣어주었습니다.@BeforeEach void setUp() { 1-1. 2-1. 3-1. 사용자1 생성에 필요한 내용 준비 1-2. 2-2. 3-2. 사용자1 생성 1-3. 2-3. 3-5. 사용자1의 게시물 생성에 필요한 내용 준비 1-4. 2-4. 3-6. 사용자1의 게시물 생성 } @DisplayName(""사용자가 댓글을 작성할 수 있다."") @Test void writeComment() { // given 1-5. 댓글 생성에 필요한 내용 준비 // when 1-6. 댓글 생성 // then 검증 } @DisplayName(""사용자가 댓글을 수정할 수 있다."") @Test void updateComment() { // given 2-5. 댓글 생성에 필요한 내용 준비 2-6. 댓글 생성 // when 2-7. 댓글 수정 // then 검증 } @DisplayName(""자신이 작성한 댓글이 아니면 수정할 수 없다."") @Test void cannotUpdateCommentWhenUserIsNotWriter() { // given 3-3. 사용자2 생성에 필요한 내용 준비 3-4. 사용자2 생성 3-7. 사용자1의 댓글 생성에 필요한 내용 준비 3-8. 사용자1의 댓글 생성 // when 3-9. 사용자2가 사용자1의 댓글 수정 시도 // then 검증 }  👨🏻‍💻 강의 출처Practical Testing: 실용적인 테스트 가이드 

백엔드워밍업클럽백엔드소프트웨어_테스트junit5SpringJPAMockito

레이

[인프런 워밍업 클럽 4기 - BE 클린 코드 & 테스트 코드] 3주차 발자국 👣

👣 3주차 발자국 💻 강의 수강👩🏻‍💻 학습 내용 요약Layered Architecture -> 관심사의 분리라이브러리 vs 프레임워크Persistence Layer: Data Access 역할Business Layer : 비즈니스 로직 구현, Persistence와 상호 작용, 트랜잭션 보장, 동시성 고민Presentation Layer: 외부 요청, Mocking, MockMvc @SpringBoot vs @ DataJpaTest 🤔 학습 회고최근 테스트 코드를 작성할 일이 많았지만, 명확한 기준 없이 작성하고 있었습니다. 강의를 통해 테스트 작성의 기준이 점차 명확해지고 있어서 도움이 많이 됩니다! 이번 주는 직무 과제와 이력서 작성으로 인해 너무 바빠서 강의가 밀렸습니다.. 아쉬운 한 주였습니다.. 🎯 다음 주 학습 목표라이브 세션 듣고 미션 다시 진행해 보기  ✉ 미션💭 미션 해결 과정Day 11 미션문서를 작성한다는 생각으로 다양한 엣지 케이스에 대한 테스트 코드를 작성하려고 노력했습니다.  🤔 미션 회고강의를 들을 때는 할 만 하겠다고 생각했지만, 막상 직접 과제를 진행해 보니 생각보다 쉽지 않았습니다.테스트 코드를 문서로 접근하니 어디까지 작성해야 할지에 대한 범위 설정이 고민되었습니다.과제를 진행하면서 이 정도까지 테스트를 진행해야 하는가에 대한 의문이 많이 들었습니다.  👨🏻‍💻 강의 출처Practical Testing: 실용적인 테스트 가이드 

백엔드워밍업클럽백엔드소프트웨어_테스트junit5SpringJPAMockito

채널톡 아이콘