# Junit und private Methoden



## DarkHappyAffe (21. Sep 2007)

Aus der Junit-FAQ:


> *How do I test private methods?*
> 
> Testing private methods may be an indication that those methods should be moved into another class to promote reusability.
> 
> ...



Ich habe ehrlich gesagt Probleme, diesen Satz zu verstehen.

Private Methoden setzt man ja eigentlich nur als Hilfsfunktionen innerhalb einer Klasse und weil es halt nur Hilfsfunktionen für eine andere (öffenltiche) Methode sind, sollen sie halt private sein, damit sie sonst keiner benutzt.
Was hat es dann also für einen Sinn, private Methoden in eine extra Klasse auszulagern um die Wiederverwendbarkeit zu erhöhen? Ich benutze doch gerade private Methoden, WEIL sie nur IN dieser einen und VON dieser EINEN Klasse benutzt werden sollen? Oder habe ich da irgendwo einen Logikfehler? ;-)

Wie sollte man eurer Meinung nach am besten private Methoden testen?
- Gar nicht?
- Direkt innerhalb der Klasse, in der auch die zu testende Methode steht?
- Über Reflection?



PS: Und wieso darf ich nicht den Titel "Junit - private Methoden testen" für dieses Posting wählen?  ???:L


----------



## SnooP (21. Sep 2007)

Ich denke mal eher, dass es so gemeint ist, dass wenn man auf die Idee kommt private Methoden zu testen, vorher auf die Idee kommen sollte, diese als public-Methoden in andere Klassen auszulagern.

Daher - private Methoden gar nicht Testen.
Man will ja den Zustand bzw. die Änderung desselbigen eines Objekts testen, dieser muss ja irgendwie durch eine public-Methode initiiert werden - also testet man diese public-Methode und die unterschiedlichen Ergebnisse aufgrund unterschiedlicher Eingaben... ergo testest du damit die privaten Methoden gleich mit.
Die public-Methoden sind demnach in jedem Fall die wichtigeren, weil diese auch Auswirkungen auf andere Klassen haben. Sprich, wenn man irgendwo nen Refactoring macht, dann haben private Methoden keinen Einfluss auf Abhängigkeiten mit anderen Klassen - die public aber sehr wohl... - und wenn die private Methode denn tatsächlich so geändert wurde, dass der Zustand der Objekte sich grundsätzlich ändert, bekommt man diese Tatsache immer noch über das Testen der public-Methoden mit...

hoffe einigermaßen verständlich gebrabbelt zu haben... is schließlich Freitag und ich hab gleich Feierabend


----------



## maki (21. Sep 2007)

Bin zufällig heute hierüber gestolpert: http://www.javaworld.com/javaforums/showflat.php?Cat=2&Number=53407&an=0&page=0#Post53407


----------



## DarkHappyAffe (21. Sep 2007)

Jo, danke schön. SnooP hat im Prinzip meine Meinung wiedergespiegelt (bzw. meine Meinung aus dem Unterbewusstsein ans Tageslicht befördert). Und danke maki für den Codeschnipsel. Hat beides geholfen.


----------

