Should I test private methods or only public ones?

Patrick Desjardins picture Patrick Desjardins · Sep 19, 2008 · Viewed 114.3k times · Source

I have read this post about how to test private methods. I usually do not test them, because I always thought it's faster to test only public methods that will be called from outside the object. Do you test private methods? Should I always test them?

Answer

jop picture jop · Sep 19, 2008

I do not unit test private methods. A private method is an implementation detail that should be hidden to the users of the class. Testing private methods breaks encapsulation.

If I find that the private method is huge or complex or important enough to require its own tests, I just put it in another class and make it public there (Method Object). Then I can easily test the previously-private-but-now-public method that now lives on its own class.