중재자 참고 : 여기에 이미 39 개의 답변이 게시되어 있습니다 (일부는 삭제되었습니다). 답변 을 게시하기 전에 토론에 의미있는 것을 추가 할 수 있는지 여부를 고려 하십시오 . 다른 사람이 이미 말한 것을 반복했을 가능성이 높습니다.
가끔 단위 테스트를 작성하기 위해 클래스 공용에서 개인용 메소드를 작성해야하는 경우가 있습니다.
일반적으로 이것은 메서드가 클래스의 다른 메서드간에 공유되는 논리를 포함하고 자체적으로 논리를 테스트하기가 더 어렵 기 때문에 또는 스레드 문제에 대해 걱정할 필요없이 동기식 스레드에서 사용되는 논리를 테스트하고 싶을 수도 있습니다. .
다른 사람들이 스스로하는 일을합니까? 왜냐하면 저는 그 일을 정말 좋아하지 않기 때문입니다 ?? 개인적으로 보너스는 클래스 외부에서 서비스를 제공하지 않는 메소드를 공개하는 문제보다 중요하다고 생각합니다 ...
최신 정보
모두에게 답변을 주셔서 감사합니다, 사람들의 관심을 끌고있는 것 같습니다. 클래스가 사용될 유일한 방법이기 때문에 퍼블릭 API를 통해 테스트를 수행해야한다는 일반적인 합의가 있다고 생각합니다. 위에서 언급 한 두 가지 사례는 흔하지 않은 사례였으며 그로 인해 얻을 수있는 이점이 가치 있다고 생각했습니다.
그러나 모든 사람들이 결코 그런 일이 일어나지 않아야한다는 점을 알 수 있습니다. 그리고 조금 더 생각할 때 테스트를 수용하기 위해 코드를 변경하는 것은 나쁜 생각이라고 생각합니다. 결국 테스트가 일종의 지원 도구라고 생각하고 시스템을 '지원 도구를 지원하도록'변경하는 것이 뻔하다 고 생각합니다. 나쁜 연습.
@VisibileForTesting
는 그러한 방법을 만들기 위해 주석을 제공하기도합니다 . 방법이 아닌 이유 private
가 제대로 문서화 되도록하는 것이 좋습니다 .