Community

@VisibleForTesting을 활용에 대한 단상

https://shoulditestprivatemethods.com/ 라는 사이트가 있습니다. 본문의 내용처럼 private method에 대해 테스트 코드를 작성하지 말라는 이야기인데요. 단순히 "private 메서드에 대한 테스트 코드는 작성하지 말자"로 정리하면 안 됩니다. 왜 private method에 대한 테스트 코드를 작성하면 안 되는지, 그럼 그에 대한 테스트 코드는 무시하면 되는지, 아니면 어떻게 해야 하는지 등 코드 전반에 대해 고민이 필요하죠. @VisibleForTesting이라는 어노테이션으로 private method를 테스트하는 코드에 대한 생각을 작성해 주신 글이 있어 공유드립니다. 저도 몰랐는데 https://github.com/google/guava/blob/master/guava/src/com/google/common/annotations/VisibleForTesting.java 이런 게 있더라고요. 테스트 코드를 작성하는 이유는 텍스트 그대로 "테스트"를 하기 위한 목적이 가장 크지만 그 외에 코드설계에 대해 다시 리팩토링할 수 있는 기회로 삼아야 한다고 생각합니다. 어떤 메서드를 테스트해야 하는데 그게 private method라면? 그 메서드를 호출하는 클라이언트를 테스트한다든지, 책임과 관심사를 분리해서 로직이 밖으로 드러날 수 있도록 할 수도 있겠고요. http://www.chidoo.me/index.php/2023/08/25/thinking-about-visible-for-testing-annotation/

알림

알림이 없습니다