I recently noted that adding [TestInitialize] to a protected method in a .NET assembly wasn't respected, but if I made the method public it was called by the unit test runner (Resharper in this case). I've noticed this several times in the past with test methods.
Technically speaking, its just as easy to reflect on a private method as a public method. As a matter of fact, reflection is a method employed to unit test private methods.
So why do I need to make all my unit test methods public?