We had a discussion today around how to test private methods in unit tests. I could have sworn I blogged about this about a year ago but I guess not.
Anyway, let's say you have Implementation.dll that contains a private method. Within the AssemblyInfo.cs file for that assembly, simply add the InternalsVisibleTo attribute, naming the assembly that will be making the calls into the implementation.
For example, if MyUnitTests.dll will call private methods on a class in Implementation.dll, add the following to the AssemblyInfo.cs file for Implementation.dll:
[assembly: InternalsVisibleTo("MyUnitTestAssembly.dll")]
Scary? Yes, but also very useful if you are truly applying TDD.
More info here: http://msdn2.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx