Es ist manchmal nützlich, ja.
Wenn die Klasse erweiterbar ist, stellen Sie sicher, dass die Methode abgeschlossen ist.
Dokumentieren Sie auch die Tatsache, dass die Methode nicht von Unterklassen oder externen Klassen desselben Pakets aufgerufen werden soll.
Ich verwende die Guava @ VisibleForTesting-Annotation, um klarzustellen, dass die Methode tatsächlich privat sein sollte.
Nein im Allgemeinen nicht. Die Idee des Komponententests besteht darin, ... Einheiten zu testen. Oder anders ausgedrückt Implementierungen von Schnittstellenmethoden. Wenn Sie eine Methode testen möchten, die Sie nicht "sehen" können, könnte dies ein Code-Geruch sein. Vielleicht haben Sie Ihre Geschäftslogik nicht genug vom UI-Code oder etwas anderem getrennt.
Die beste Idee wäre also, Ihre Architektur zu überdenken. Aber wenn die Alternative wäre, Ihren Code nicht zu testen, ist es eine gute Idee, diese Methoden zu schützen.
Sie können stattdessen das Methodenpaket lokal machen.
Sie können private Methode über Reflektion aufrufen oder Sie können entscheiden, dass private
Methoden nicht direkt, sondern nur indirekt getestet werden sollen.
Obwohl du es vorziehen solltest, die Seite als @ user714965 zu refactorieren, kann PowerMocks MockPrivate das Spott machen, ohne es zu öffnen die Sichtbarkeit Ihrer privaten Methoden.
Wenn Sie Ihre Tests zuerst schreiben, führt das normalerweise zu einem Design, bei dem Sie keine privaten Methoden vortäuschen müssen.