Elle dépend de la méthode fait partie d'une API publique ou pas. Si une méthode n'appartient pas à la partie d'une API publique, mais est appelé publiquement à partir d'autres types au sein de la même assemblée, l'utilisation interne, l'ami de votre unité de montage d'essai, et de l'unité de test.
Cependant, si la méthode n'est pas/ne devrait pas faire partie d'une API publique, et il n'est pas appelé par d'autres types interne à l'assemblée, de NE PAS le tester directement. Il doit être protégé ou privé, et il ne doit être testé indirectement par unité de test de votre API publique. Si vous écrivez des tests unitaires pour les non-public (ou de ce que devrait être non-public) les membres de votre types, vous êtes de liaison code de test pour la mise en œuvre interne de détails.
C'est un mauvais type de couplage, on augmente la quantité de tests unitaires dont vous avez besoin, augmente la charge de travail à la fois dans le court terme (plus de tests unitaires) ainsi que dans le long terme (plus de test à l'entretien et à la modification de la réponse à la refactorisation de la mise en œuvre interne de détails). Un autre problème avec le test de non-membres du public, c'est que votre code de test qui peut ne pas être requis ou utilisés. Un EXCELLENT moyen de trouver de code mort, c'est quand il n'est pas couvert par l'un de vos tests unitaires lors de votre API publique est couverte à 100%. La suppression du code mort est une excellente façon de garder votre base de code maigre et moyenne, et est impossible si vous n'êtes pas prudent à propos de ce que vous mettez dans votre API publique, et quelles parties de votre code de test de l'unité.
EDIT:
Une rapide remarque supplémentaire...avec un plan bien conçu public de l'API, vous pouvez très efficacement l'utilisation d'un outil tel que Microsoft PEX pour générer automatiquement la pleine couverture des tests unitaires qui testent chaque chemin d'exécution de votre code. Combiné avec quelques manuellement des tests écrits qui couvrent le comportement critique, ce qui n'est pas couvert peut être considéré comme du code mort et retiré, et vous pouvez considérablement raccourci de votre processus de tests unitaires.