One main point is
If we test to ensure the correctness of the logic, and a private method is carrying a logic, we should test it. Isn't it? So why are we going to skip that?
Writing tests based on the visibility of methods is completely irrelevant idea.
Conversely
On the other hand, calling a private method outside the original class is a main problem. And also there are limitations to mock a private method in some mocking tools. (Ex: Mockito)
Though there are some tools like Power Mock which supports that, it is a dangerous operation. The reason is it needs to hack the JVM to achieve that.
One work around that can be done is (If you want to write test cases for private methods)
Declare those private methods as protected. But it may not be convenient for several situations.