Think8 Spring Security 적용 이후 API 계층 테스트 방법에 대한 생각 Spring Security를 적용하고 API계층을 테스트하기가 한층 어려워졌다. Spring Security 프레임워크를 사용하기 시작하는 시점부터, API 계층은 해당 라이브러리와 아주 강하게 결합된다. Security 설정을 어느 정도 마치고 테스트에 적용하니, 내가 작성한 Configuration 파일이 적용되지 않았다. 예를 들어, 사용자의 인증 정보가 필요하지 않은 메서드에도 @WithAnonymousUser가 적용되지 않거나, disable한 csrf를 요구했다. 내가 생각한데로 진행이 되지 않아 답답했다. 아마 이렇게 된 이유는 @WebMvcTest를 이용하여 단위 테스트 형태로 테스트 코드를 작성한 탓이라 생각되어 @SpringBootTest로 바꾸고 테스트를 진행해보니 내가 생각한 데로.. 2023. 12. 5. 나는 왜 테스트 코드 작성을 어려워 했는가? 테스트 코드를 작성하는 것의 중요도는 여러 자료들에서 찾아볼 수 있다. 나 역시 개인적으로 테스트 코드를 왜 작성해야하는지, TDD를 공부해야 하는 이유는 무엇인지에 대해 생각했던 경험이 있다. 최근에는 테스트 코드 작성에 어려움을 겪어 이동욱님의 블로그 글들을 참고하기도 하고, 인프랩이나 카카오의 기술 블로그 글 들을 읽어보았다. 그리고 여러 글들을 참고하고 영상들을 본 끝에, 내가 왜 테스트 코드를 작성하는데 어려움을 겪고 있었는지를 어렴풋이나마 이해할 수 있게 되었고, 이를 위해 기록하고자 한다. 나의 이해를 가장 크게 도운 자료는 권용근님의 스프링캠프 - 무엇을 테스트 할 것인가? 어떻게 테스트 할 것인가? 발표 영상이었다. 테스트 코드를 작성하면서 내가 겪었던 가장 큰 어려움은 '이렇게 짤거면 .. 2023. 8. 23. 스트림은 왜 사용해야 하는가. 오늘 부트캠프에서 스트림에 대해 배웠다. 람다와 스트림은 정말 아예 문외한이던 영역이기 때문에, 일단은 기본적인 내용을 받아들이는데 가장 힘을 썼던 것 같다. 이 스킬들을 사용하고 체득하는 데는 직접 문제 풀이나, 프로그래밍에 사용해보면서 익숙해지는 방법 밖에 없다. 결국 나의 노력에 스트림을 얼마나 잘 사용하는지가 달려있다. 그런데 스트림은 왜 사용해야 할까? 사실 처음 스트림을 접했을 때는 이걸 도대체 왜 쓰나 싶었다. 지금 알아가는 것도 양이 너무나 방대한데, 새로운 메서드들을 배우고 익혀야 한다는 것이 두렵기도 했고, 스트림을 사용하기 위해선 필연적으로 람다식도 익혀야 하는데 람다식은 학교에서 배울 때 무슨 말인지 도저히 이해를 못했던 부분이라 두려움이 배가 되었다. 그럼에도 오늘 람다식과 스트림.. 2023. 3. 8. TDD는 왜 공부해야 하는가. 개발 공부를 시작한 이래로, 여러 개발 방법론을 듣고 읽고 사용해 보고자 노력했다. 최근에는 클린 코드 작성과 더불어 TDD에 대해서 공부를 진행하고 있다. TDD에 관한 자료를 찾아보면 2014년도부터 2022년까지 꾸준히 자료가 올라옴을 확인할 수 있다. 그리고 대부분의 자료는 TDD에 관한 찬반 논쟁 자료다. 말 그대로, 사람들은 TDD가 좋다 나쁘다로 거즘 10년이 되는 시간 동안 싸우고 있다. TDD는 개발 방법론 중 하나이기 때문에, 당연히 이를 사용하고 말고는 개발자 마음이다. 나 역시 TDD를 공부해야 하는 이유에 대해 기술할 예정이지만, TDD만이 절대 지존이며, 반드시 TDD만 써야 한다라고는 말하지 않을 것이다. 다만, TDD를 공부하면서 느꼈던 'TDD를 사용한 개발 방법이 주는 이.. 2023. 3. 2. 생성자 오버로딩은 왜 사용하면 안되는가. 지난 주차에 생성자 오버로딩에 관련하여 배우면서, 생성자 오버로딩의 사용법과 왜 사용하는지에 대해 공부했다. 그리고 생성자 오버로딩은 왜 사용하면 안 되는지에 대해 생각해 보라는 숙제를 받았다. 오늘까지 고민해본 결과 생성자 오버로딩을 사용하면 안 되는 이유는 다음과 같다. 생성자 오버로딩은 명시적이지 않은 코드를 만든다. 클린 코드를 공부하면서 내 나름대로 세운 규칙 중에 하나는 '반드시 명시적인 이름을 사용하라' 이다. 우리는 코드를 마치 '글을 읽듯이 읽을 수 있게 작성해야 한다'. 전체적인 코드를 봤을 때, public한 메서드들과 생성한 객체들만 가지고도 어떤 객체들을 활용해서 어떤 기능을 하는 프로그램인지 알 수 있어야 한다. 따라서 메서드의 이름과 객체의 이름, 변수의 이름은 반드시 '그 이.. 2023. 2. 28. 이전 1 2 다음 반응형