Sie können private Methoden testen, indem Sie Ihre Testassembly als Friend-Assembly der zu testenden Zielassembly deklarieren. Siehe den Link unten für Details:
http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx
Dies kann nützlich sein, da es Ihren Testcode meistens von Ihrem Produktionscode trennt. Ich habe diese Methode selbst nie angewendet, da ich nie eine Notwendigkeit dafür gefunden habe. Ich nehme an, Sie könnten damit versuchen, extreme Testfälle zu testen, die Sie in Ihrer Testumgebung einfach nicht replizieren können, um zu sehen, wie Ihr Code damit umgeht.
Wie bereits gesagt, sollten Sie private Methoden wirklich nicht testen müssen. Sie möchten Ihren Code mehr als nur in kleinere Bausteine umgestalten. Ein Tipp, der Ihnen bei der Umgestaltung helfen könnte, ist, über die Domäne nachzudenken, auf die sich Ihr System bezieht, und über die „echten“ Objekte nachzudenken, die diese Domäne bewohnen. Ihre Objekte / Klassen in Ihrem System sollten sich direkt auf ein reales Objekt beziehen, sodass Sie das genaue Verhalten des Objekts isolieren und die Verantwortlichkeiten der Objekte einschränken können. Dies bedeutet, dass Sie logisch umgestalten und nicht nur das Testen einer bestimmten Methode ermöglichen. Sie können das Verhalten der Objekte testen.
Wenn Sie immer noch das Bedürfnis haben, interne Tests durchzuführen, sollten Sie sich auch über Ihre Tests lustig machen, da Sie sich wahrscheinlich auf einen Teil des Codes konzentrieren möchten. Beim Verspotten fügen Sie Objektabhängigkeiten ein, aber die injizierten Objekte sind nicht die "echten" oder Produktionsobjekte. Sie sind Dummy-Objekte mit fest codiertem Verhalten, um das Isolieren von Verhaltensfehlern zu erleichtern. Rhino.Mocks ist ein beliebtes kostenloses Mocking-Framework, das im Wesentlichen die Objekte für Sie schreibt. TypeMock.NET (ein kommerzielles Produkt mit einer verfügbaren Community Edition) ist ein leistungsfähigeres Framework, das CLR-Objekte verspotten kann. Sehr nützlich, um die Klassen SqlConnection / SqlCommand und Datatable zu verspotten, beispielsweise beim Testen einer Datenbank-App.
Hoffentlich gibt Ihnen diese Antwort ein bisschen mehr Informationen, um Sie über Unit-Tests im Allgemeinen zu informieren und Ihnen zu helfen, bessere Ergebnisse mit Unit-Tests zu erzielen.