리팩터링 내성을 생각을 해서 테스트를 진행하려면
테스트 대상의 구현에 의존하지않고 결과를 검증해야한다는데
예를 들어 특정 서비스의 삭제 메서드가 있고
레파지토리의 delete 메서드를 호출한다고 했을때
단위 테스트로 결과를 검증하려면 레파지토리 목 객체의
delete 메서드 호출 여부를 검증해야하는거 같은데
이러면 구현에 의존하게 되는거 아닌가?
단순히 delete 메서드로 삭제를 수행하다가
deleteById로 바꾸기만 해도 테스트는 실패되는데
반환 값이 없는 삭제 메서드의 경우에는 어떤식으로 단위 테스트를 진행해야 함?
[일반] 테스트 코드 작성 질문
익명(218.153)
2023-09-29 18:50
추천 0
댓글 8
다른 게시글
-
후 국비충 프로젝트 하다가 탈모 오는 줄 알앗다 [6][일반] 익명(180.68) | 23.09.29추천 0
-
김영한 강의 미리 사놔야되나 [7][일반] Bocchi☆(rtx2070) | 23.09.29추천 0
-
김영한 db 1편 보기전에 [5][일반] 익명(ppppippppu) | 23.09.29추천 1
-
패키지-클래스 컨벤션같은 것도 있음? [4][일반] 익명(211.213) | 23.09.29추천 1
-
cs랑 스프링이랑 코테연습을 하루동안 한다면 [3][일반] 익명(39.7) | 23.09.29추천 0
-
업비트 백엔드는 파이썬으로 되어있나보네 [4][일반] 익명(223.38) | 23.09.29추천 0
-
백엔드 초보 게시판 댓글 구현 중에 막히는데 질문점... [4][일반] 익명(180.70) | 23.09.29추천 0
-
26살 개백수 j노마더 코더 클론강의 대충 보다가 걍 백엔드로 할려는데. [8][일반] 익명(175.120) | 23.09.28추천 0
-
자바스크립트 딥다이브 이 책 뭔가.. [8][일반] 익명(211.46) | 23.09.28추천 0
-
연대 알고리즘 연구실 지도교수면 개발자 어느정도 급이냐 [1][일반] 익명(223.39) | 23.09.28추천 0
mock은 당연히 구현체의 영향을 받음 fake쓰면 됨
원칙적으로는 그런데 외부 인프라에서 불러오는 값 세팅은 해줘야지 대신 그런 테스트를 최소화 할 수는 있음 인프라 관련 코드는 최대한 단순하고 멍청하게 하란대로만 하게 짜서 테케도 단순하게 가져는게 베스트 다른 로직이랑 얽히고 섥히면 아주 골치아파
아니면 mock 테스트 대신 통합 테스트를 돌리는 방법도 있지 전체 로직을 돌리라는건 아니고 최대한 분리를 해서 일부만 통합테스트 대상이 되도록 해야함 그리고 어떤 클래스군이 통합테스트로 검증될지 명확한 기준이 있어야함
다만 이렇게 분리를 하려면 비슷한 케이스가 많아서 동일한 인프라 관련 코드가 공용으로 쓰일 수 있거나, 테스트 난이도가 너무 높아서 분리가 필요하거나 해야함
정 답이 안나오면 아싸리 통합테스트 위주로 작성하는 것도 방법임 메서드 하나마다 mock 테스트 만들면 관리가 안되거든 코드 개선할때마다 테스트 수정량 씨발소리 절로 나오니 사람들이 코드 개선할 생각을 안함 로직 수정했는데 일은 바쁘고 테스트도 고쳐야되면 보통 제대로 안고치고 대충 돌아만 가게 만듬 이딴 테스트가 의미 있을 리 없잖아?
중요한 것은 실현 가능한 수단이라는걸 잊지 마 테스트는 생산성을 올리기 위한거지 신이 내린 법칙이 아님 테스트를 짜서 생산성이 감소하면 주객이 전도된거
여기서 생산성은 당장 코딩하는데 걸리는 시간이라기보다는 프로덕트 전체적인 관점에서의 생산성임
감사합니다