It used to be the number one reason for us to choose MSTest from others that we could access and test private methods. Now that Private accessors are deprecated in Visual Studio 2012. Does anyone know why Microsoft make such decision? Is it because it's not a good practice to test private methods?
Also, if I still need to unit test my private methods, how could I do that in VS 2012 and later versions?
According to VS team article Generation of Private Accessors... this feature was deprecated in 2010 for following reasons:
(More historical notes may be found via following search: mstest why private accessors depricated site:blogs.msdn.com ).
For your second part of the question - generally you should not need to unit-test private methods. If you really feel need to expose such methods for testing - consider if marking
internal
and using "friend" (InternalsVisibleToAttribute
) would work for your case.