[회고] 220110: TDD 시작해보기
sql을 학습하면서 시간이 많이 남게되어, 무엇을 할지 고민하던 중 TDD라는 여태까지 피해왔던 카드를 다시꺼내보게 되었다. 번거롭다는 단점때문에 TDD를 받아들이지 못하고 있다가, 내 어플리케이션이 항상 의도대로 동작하지 않는 것을 보고, 또 스웨거에서 점점 길어지는 검증로직들을 보며 TDD의 필요성을 느끼게 되었다. 클라이언트를 통해 검증을 할 수도 있겠지만, 점점 과정이 길어질수록 로그인하고, 토큰발급받고하다보면 여간 귀찮은게 아니기 때문이다. 개발자가 본인이 작성한 코드를 코드로서 검증하는 것이 가장 빠르고 정확하다라는 판단을 했고, 따라서 TDD를 작은것부터 시작해보기했다.
처음엔 아예 감도 잘 오지 않았다. 그래서 이미 TDD를 잘 적용중이신 ㅁㅅ님께 가서 도움을 청했는데, 많은 정보를 얻을 수 있었다. TDD는 통합보단 단위테스트를 많이하며, given -> when -> then의 순서에서 given이 가장 중요한 파트라는 것도 이해 할 수 있었다.
테스트환경은 말그대로 목업 환경에서 이뤄지기때문에, 내 의도대로 동작하지 않는게 아직 많다.. 오늘은 timestamped로 작성해놓은 값에 null이 계속 할당되어, 넘어가지 못하는 상황이 있었는데, 좀 찾아보니 테스트환경은 기존 어플리케이션과 다르게 돌아가므로 테스트환경에도 EnableAudit을 해줘야한다는 사실을 알았다. 이외에도 mockmmvc를 이용해 api를 검증할 수 있는데, 아직 적용해보지 못했다.
아직 손에 잡히지 않는 부분이 많은데, 얼른 익숙해져서 자신있게 TDD에 대해서 말할 수 있게 되는 수준이 되었으면 좋겠다.
[TodayKeywords] 오늘 공부한 키워드
-
given -> when -> then
:given
: 테스트 환경에서 어떤것을 셋팅 할 지, 결정 짓는 곳. TDD에서 가장 중요한 부분.when
: 어디서 해당 테스트를 실행할건지 결정하는 부분then
: when 에서 수행한 값이 실제로 원하는 결과 값을 뱉고있는지, 검증하는 부분 aasert, verify등을 이용하여, 검증한다.
@Mock
: 실제 빈이 아닌, 실제 빈을 클론한 목업 객체를 테스트 환경에 넣어주는것.@InjectMocks
:@Mock
으로 선언된 객체에,@InjectMocks
으로 선언된 목업객체를 주입함으로서 테스트 환경이 구동되도록 한다.
[NextKeyworks] Study Queue
- HTTPS
- SOLID
- loop label
- CSV
- 파일입출력
- UML
- UTC
- epoch time / Instant time
- MVC
- URL ClassLoader
- Secure ClassLoader
- JNI
- GC
- HOF
- 자바 해시코드(hashCode)
- OSI 7 계층
- PCB
- 스프링 설계철학
- RESTful
- 준 영속성
- 지연로딩
- 프록시객체
- jpa - mybatis 의 차이
- orm - mapper 의 차이
- 쿠키/세션/로컬 스토리지
- HttpMessageConverter
- 서블릿
- ACID