Wann ist es angebracht, die Kapselung in Komponententests zu umgehen?

Ich bin kürzlich darauf aufmerksam gewordenPowermock Whitebox Funktionalität. (Zusammenfassend lässt sich sagen, dass Sie private Methoden direkt testen oder private Mitglieder direkt aus Komponententests heraus modifizieren können - während Sie diese privat halten!)

Ich weiß, dass es einige Denkmuster gibt, die bei Unit-Tests etwas anderes als sichtbare Methoden verachten, aber verdammt noch mal, manchmal möchte man nur einen einfachen Test, um sicherzustellen, dass eine Deep-Level-Helfer-Methode das tut, was sie tun soll ... ohne Wenn Sie den möglicherweise enormen Aufwand durchlaufen, um die Parameter und Mocks vorzubereiten, die für die Filterung der übergeordneten Methoden auf Ihre Methode erforderlich sind, müssen Sie nur noch zaubern, um die Ergebnisse dieser inneren Methode zu extrahieren. Kurz gesagt, um diese inneren Methoden zu testen, sind die komplexesten und schwer nachzuvollziehenden Komponententests erforderlich. (Und, zu Ihrer Information, unser Unternehmen hat eine 100% ige Einheitentestabdeckung.Diese Methoden müssen getestet werden!)

Mir ist das bewussteine Methodik ist zuVeränderung Methodenzugriffsmethoden, um Komponententests zu ermöglichen (z. B. Änderung vonprivate zuprotected, aber Powermock Whitebox ermöglicht einen direkten Test, ohne den Quellcode zu ändern.

Trotzdem sagte Mama immer: "Nur weil du kannst, heißt das nicht, dass du es solltest."

Ist es jemals angebracht, solche inneren Methoden zu testen? Wenn ja, welche Faustregel sollte ich anwenden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage