My problem is that I have public method in my class and it is calling a private method. The private method is calling another private method and so on with 4 chained private methods. I know that I should write unit tests only for public methods. In my case I will have full code coverage, because all private methods are called from the public method. But in case something goes wrong my unit test won't know exactly which method screwed it up. I know that I should try to move some of my methods in separate classes, so that I can test them but this means that I should make 4 different classes with only one method in each.
So is there a way to test each of these private methods, or I just should use the integrated feature in Visual Studio for testing private methods?
You are already testing the private methods by calling the public one. You test the input and output of the public method - which relies on the private ones, hence all are being tested. Any problems that occur will result in an exception which (upon checking the stack trace) will inform you which method (private or otherwise) is causing the problem.
Private members are just that, private. They shouldn't be exposed to the outside since they're only concerned with the inner workings of the object, hence unit tests should (and can only) test the public ones, which is what you're already doing.