private 테스트 해야돼?
private 메소드는 어떻게 하나요? 라는 질문이 우테코 단톡에 올라왔다.
- 리플렉션을 사용하는 방법(개인적으로 절대 사용하지 않는)
- 내가 답변했던 package-private을 사용하는 방법
- 테스트 자체를 하지 않는 방법(말도 안된다고 생각했다.)
말도 안된다고 생각 했던 이유는 가장 중요한게 내부 구현인데 그걸 테스트 하지 않는다고?
라고 생각했었기 때문이다. 그래서 나도 package-private을 사용해서 private을 해제하고 내부 구현의 개발을 진행하였다. 그런데 이게 진짜 맞을까? 라는 생각이 들었다.
처음에 이펙티브 자바 접근 제한자에 대해서 공부할 때 package-private(default)에 대해서 알게 되었고, 이를 테스트시에 풀어줘도 된다. 라는것을 기억하고 있었는데 정확히는 private 메소드를 테스트 하는게 올바른 테스트인지 다시 한번 생각해보라는 내용도 정리가 되어 있었기 때문이다.
그래서 검색 해봤다.
결론
private 메소드는 테스트 하지 않는다.
만약 private 메소드를 테스트해야 하는 경우 아래와 같은 문제점이 있지 않은지 확인해야 한다.
- private 메소드에 dead code가 있다.
- private 메소드가 너무 복잡해서 다른 클래스에 속해야 한다.
- 애초에 private 메소드가 아니어야 한다.
즉. public만 테스트해라. private을 꼭 테스트 해야 하는 상황이 온다면
그건 높은 확률로 설계가 잘못 되었을 가능성이 높다.
reference
https://justinchronicles.net/ko/2014/07/14/dont-do-testing-private-methods/
'Study > 우아한 테크 코스' 카테고리의 다른 글
테스트는 왜 해야할까? 내가 생각하는 테스트코드를 작성하는 이유 (0) | 2023.11.06 |
---|---|
[우아한 테크 코스] 프리코스 - 2주차, 레이싱카 회고 (1) | 2023.11.04 |
MVC 패턴, 우아한 테코톡 내용 총 정리 (1) | 2023.10.31 |
[우아한 테크 코스] 프리코스 - 1주차, 숫자 야구 회고 (1) | 2023.10.27 |