When I first started using unit tests I encountered two problems. First was being able to test private methods and fields and second falling behind on keeping unit tests up
I find that keeping my unit tests in their own assembly works very well, and haven't run into any problems using it.
However, if you find yourself needing to test private members of some class, that probably means your class is doing a lot of stuff. You may be better off extracting those private members into a new class. Then you can test that new class directly via its public methods.