Best Practices

I think generally speaking testing private methods is a smell.
Let's discuss an example: you have a class with 1 public method that uses 5 private methods.

Testing the single public method will make sure that the class will respect the contract set with other classes and will make that single method rock solid.

Testing the 5 private methods doesn't provide any value to the test suite, in the sense that if a private method is breaking and the public method isn't as well, then the test suite for the public method is probably weak. This of course depends on how small private methods are, but if they aren't it's probably a sign there there is some missing abstraction in place.