Il est possible de tester des méthodes privées en déclarant votre assemblage de test comme un assemblage ami de l'assemblage cible que vous testez. Voir le lien ci-dessous pour plus de détails :
http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx
Cela peut être utile car cela permet de séparer le code de test du code de production. Je n'ai jamais utilisé cette méthode moi-même car je n'en ai jamais trouvé le besoin. Je suppose que vous pourriez l'utiliser pour essayer de tester des cas extrêmes que vous ne pouvez tout simplement pas reproduire dans votre environnement de test pour voir comment votre code le gère.
Comme cela a été dit, vous ne devriez pas avoir besoin de tester les méthodes privées. Il est plus que probable que vous souhaitiez refactoriser votre code en blocs plus petits. Une astuce qui pourrait vous aider à refactoriser est d'essayer de penser au domaine auquel votre système se rapporte et de penser aux objets "réels" qui habitent ce domaine. Vos objets/classes dans votre système doivent se rapporter directement à un objet réel, ce qui vous permettra d'isoler le comportement exact que l'objet doit contenir et de limiter les responsabilités de l'objet. Cela signifie que vous refactorez de manière logique plutôt que de simplement rendre possible le test d'une méthode particulière ; vous serez en mesure de tester le comportement des objets.
Si vous ressentez toujours le besoin de tester l'interne, vous pouvez également envisager de recourir à la simulation (mocking) dans vos tests, car il est probable que vous souhaitiez vous concentrer sur un seul morceau de code. Le mocking consiste à injecter les dépendances d'un objet dans celui-ci, mais les objets injectés ne sont pas les objets "réels" ou de production. Ce sont des objets factices avec un comportement codé en dur pour faciliter l'isolation des erreurs de comportement. Rhino.Mocks est un cadre de simulation gratuit et populaire qui écrira essentiellement les objets pour vous. TypeMock.NET (un produit commercial avec une édition communautaire disponible) est un cadre plus puissant qui peut simuler des objets CLR. Très utile pour simuler les classes SqlConnection/SqlCommand et Datatable, par exemple lors du test d'une application de base de données.
Nous espérons que cette réponse vous donnera un peu plus d'informations pour vous informer sur les tests unitaires en général et vous aider à obtenir de meilleurs résultats avec les tests unitaires.