Moderator Hinweis: Hier wurden bereits 39 Antworten veröffentlicht (einige wurden gelöscht). Überlegen Sie sich vor dem Veröffentlichen Ihrer Antwort, ob Sie der Diskussion etwas Sinnvolles hinzufügen können. Sie wiederholen höchstwahrscheinlich nur das, was bereits jemand anderes gesagt hat.
Gelegentlich muss ich eine private Methode in einer Klasse öffentlich machen, um einige Unit-Tests dafür zu schreiben.
Normalerweise liegt dies daran, dass die Methode Logik enthält, die von anderen Methoden in der Klasse gemeinsam genutzt wird, und dass es einfacher ist, die Logik selbst zu testen, oder dass ein anderer Grund möglich sein könnte, wenn ich die in synchronen Threads verwendete Logik testen möchte, ohne mir Gedanken über Threading-Probleme machen zu müssen .
Tun dies andere Leute, weil ich es nicht wirklich mag? Ich persönlich denke, dass die Boni die Probleme überwiegen, eine Methode öffentlich zu machen, die außerhalb der Klasse keinen wirklichen Service bietet ...
AKTUALISIEREN
Vielen Dank für die Antworten an alle, scheint das Interesse der Menschen geweckt zu haben. Ich denke, der allgemeine Konsens ist, dass das Testen über die öffentliche API erfolgen sollte, da dies die einzige Möglichkeit ist, eine Klasse jemals zu verwenden, und ich stimme dem zu. Die paar Fälle, die ich oben erwähnt habe, in denen ich dies oben tun würde, waren ungewöhnliche Fälle, und ich dachte, die Vorteile wären es wert.
Ich kann jedoch sehen, dass jeder darauf hinweist, dass es niemals wirklich passieren sollte. Und wenn ich ein bisschen mehr darüber nachdenke, denke ich, dass es eine schlechte Idee ist, Ihren Code zu ändern, um Tests zu ermöglichen - schließlich ist das Testen in gewisser Weise ein Support-Tool, und das Ändern eines Systems, um ein Support-Tool zu unterstützen, wenn Sie so wollen, ist offensichtlich schlechte Praxis.
@VisibileForTesting
Anmerkung, um solche Methoden zu erstellen. Ich empfehle Ihnen, dies zu tun, damit der Grund dafür, dass die Methode nicht private
ordnungsgemäß dokumentiert ist.