Study/우아한 테크 코스 / / 2023. 11. 2. 19:09

private 메소드 테스트 꼭 해야 할까?

private 테스트 해야돼?

private 메소드는 어떻게 하나요? 라는 질문이 우테코 단톡에 올라왔다.

  • 리플렉션을 사용하는 방법(개인적으로 절대 사용하지 않는)
  • 내가 답변했던 package-private을 사용하는 방법
  • 테스트 자체를 하지 않는 방법(말도 안된다고 생각했다.)

 

말도 안된다고 생각 했던 이유는 가장 중요한게 내부 구현인데 그걸 테스트 하지 않는다고?

라고 생각했었기 때문이다. 그래서 나도 package-private을 사용해서 private을 해제하고 내부 구현의 개발을 진행하였다. 그런데 이게 진짜 맞을까? 라는 생각이 들었다. 

처음에 이펙티브 자바 접근 제한자에 대해서 공부할 때 package-private(default)에 대해서 알게 되었고, 이를 테스트시에 풀어줘도 된다. 라는것을 기억하고 있었는데 정확히는 private 메소드를 테스트 하는게 올바른 테스트인지 다시 한번 생각해보라는 내용도 정리가 되어 있었기 때문이다.

 

그래서 검색 해봤다.

https://www.inflearn.com/questions/1050402/private-method-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%AC%B8%EC%9D%98
https://justinchronicles.net/ko/2014/07/14/dont-do-testing-private-methods/
https://www.baeldung.com/java-unit-test-private-methods#why-we-shouldnt-test-private-methods

 

결론

private 메소드는 테스트 하지 않는다.

만약 private 메소드를 테스트해야 하는 경우 아래와 같은 문제점이 있지 않은지 확인해야 한다.

  • private 메소드에 dead code가 있다.
  • private 메소드가 너무 복잡해서 다른 클래스에 속해야 한다.
  • 애초에 private 메소드가 아니어야 한다.

즉. public만 테스트해라. private을 꼭 테스트 해야 하는 상황이 온다면

그건 높은 확률로 설계가 잘못 되었을 가능성이 높다.

 

reference 

https://www.inflearn.com/questions/1050402/private-method-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%AC%B8%EC%9D%98

 

private method 테스트문의 - 인프런 | 질문 & 답변

안녕하세요. 좋은 강의 잘 듣고 있습니다 ^^강의에서 private method 테스트를 해야되는 상황이라면객체를 분리해야되는 상황이라고 말씀을 주셨는데실무에서는 꼭 분리를 해야되는 상황이 아닐수

www.inflearn.com

 

https://justinchronicles.net/ko/2014/07/14/dont-do-testing-private-methods/

 

프라이빗 메소드들은 테스트 하지 마라

역자 주: 이 글은 Charles Miller의 포스트 Testing private methods (don't do it)를 번역한 것입니다. Peter Ghali는 프라이빗 메소드를 테스트하는 것에 대해 자신의 블로그 (역자 주: 링크 깨졌음)를 통해 저에

justinchronicles.net

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유