In general, it should not. Properly used private methods are implementation details and the purpose of unit testing is to test the public API rather than the detail.
The private method is just an aid to public methods, so no matter what changes in it or if it is giving the correct result, it matters whether audiences are giving the correct result. If the private is wrong the public will surely be wrong, and it is he who can not go wrong.
The unit test does not have to show where the error is, just that there is an error when using the API as expected, or that the usage unexpectedly is not properly handled.
For everything there is an exception and there are cases that you can do this, just not the normal one. So much that there is controversy about this. You can see in the answers in the OS that the most voted say opposite things . I would say that testing the private is something that goes beyond the unit test, but can be done as a form of extra protection and give more subsidies for testing.
.NET provides the means to work with "all" styles. InternalsVisibleTo
is not just for this.