#테스트더블

질문 1
해시태그 없이 키워드만 일치하는 질문은 개수에 포함되지 않아요.

2년 전 · 익명 님의 질문

테스트코드 작성 시 테스트더블 사용 vs 미사용 관련 질문이에요!

안녕하세요. 테스트코드에 관한 공부를 하게 되고 작성을 해보면서 의문이 들어서 질문을 드립니다. 테스트코드에 관한 얘기에서 항상 제목의 주제가 빠질 수 없는 것 같습니다. 둘 다 추구하는 바가 다를 뿐이지 틀리지 않았기 때문에 정답이 없다는 것은 알고 있지만 아직도 혼란스럽네요. 테스트코드에 관한 공부를 하면 항상 나오는게 유닛테스트, 통합테스트 등의 개념인데요. 도메인의 책임을 유닛테스트 하는 것까지는 쉽게 이해가 가는데 서비스 계층을 유닛 테스트 한다는 것이 조금은 이해(?), 수용(?)이 쉽지가 않네요. 서비스 로직은 필연적으로 외부 시스템에 의존할 수 밖에 없다고 생각을 하는데요.(DB, 외부 API 등등) 그러다보니 이런 것을 배제하고 Fake 객체나 Mockito 라이브러리 등을 사용해서 stubbing을 하고 테스트코드를 작성하는 것이 실제 운영 환경에서의 버그 혹은 문제 등을 올바르게 캐치하는 것이 가능한 것인가 하는 궁금증이 생깁니다. 외부 API는 매번 테스트코드를 돌릴 때마다 호출하는 것이 불가능할 수도 있으니 테스트더블을 사용하는 것이 크게 이상하다고 느껴지진 않습니다만, 저는 DB와 관련해서는 아직도 조금 혼란스러운 상황이네요. 실제로 테스트를 다 mocking 처리해서 작성을 해서 DB와 관련한 변경이 있을 때 테스트코드가 그걸 캐치 못 한 경험이 있는데 그 때 이럴거면 테스트코드 왜 짜지? 하는 의문이 들었던 적이 있습니다. 항상 유닛테스트가 중요하다고 다들 말씀하시는데 그러면 그 분들은 테스트코드를 작성하실 때 서비스 로직에서도 DB와 분리된 테스트더블을 사용하는 유닛 테스트를 작성하신다는 의미일까요? 아니면 테스트더블을 사용한 서비스 레이어 유닛 테스트 작성 + 테스트용 DB 혹은 h2 등을 사용하는 통합테스트 모두 다 작성해버리면 그만이니까 이런 고민을 하는게 의미가 없는 것인가? 하는 생각도 한편으로 드네요. 테스트코드를 작성하시는 다른 분들은 이 문제에 관해 어떻게 생각하시는지 궁금합니다 :D

개발자

#테스트코드

#테스트더블

#유닛테스트

#통합테스트

답변 0

댓글 0

조회 64