Best Practice Testen von protected Methoden

JunkerMartin

Mitglied
In einer Webanwendung haben wir @RestController die von einer (abstrakte) Klasse erben; unter anderem auch "protected" Methoden. Ich möchte beim JUnit-Test auch wesentliche Zwischenergebnisse prüfen können - die können aber vom Test nicht abgefragt werden, weil die Methoden eben "protected" sind. Ich möchte sie aber aus Sicherheitsgründen auch nicht public machen. Meine Frage wäre, wie komme ich am einfachsten an die Daten. Hilft mir Spring hier weiter (ich arbeite mich da gerade ein; habe aber für einen solchen Ansatz noch nichts gefunden)?
 

stg

Top Contributor
Mit Unit-Test testet man eigentlich die public API, was die Frage absolet macht.

Grundsätzlich kannst du aber protected Methoden natürlich testen, indem du die Testklasse ins gleiche package schiebst, wie die zu testende Klasse. (Dafür muss die Testklasse auch nicht im selben Folder liegen wie der source code)
 

JunkerMartin

Mitglied
Wenn man einfach von JUnit her denkt, hast Du sicher recht. Das heißt doch aber noch lange nicht, dass es keine Möglichkeiten gäbe. Wenn mir nichts weiter einfällt werde ich die Methoden in eine andere Klasse auslagern die auc über eine abstrakte Klasse beschrieben wird Über DI würde ich diese Klasse dann für den Test mit einer anderen Klasse erweitern die eine public getter darauf definieren.
Das ist nicht schön, weil man quasi Code für den Test macht, aber damit habe ich in Produktion die Methoden weiter versteckt und zum Testen bekomme ich die Ergebnisse.
Aber vielleicht gibt es ja einen eleganteren Weg; beim Durcharbeiten von Spring habe ich schon einige überraschende Mittel kennengelernt; vielleicht geht ja noch mehr.
 

stg

Top Contributor
Dass es keine Möglichkeit gibt, hab ich ja nie behauptet; ich habe doch sogar einen Lösungsansatz gepostet. Spricht da denn was gegen?
 

thecain

Top Contributor
Grundsätzlich kannst du aber protected Methoden natürlich testen, indem du die Testklasse ins gleiche package schiebst, wie die zu testende Klasse. (Dafür muss die Testklasse auch nicht im selben Folder liegen wie der source code)
So gehts doch...

In Produktivem Code sollte sich nie Code befinden, der nur für Tests da ist, sonst ist das nicht für viel.

Dann würde ich mir lieber via reflection die Methode aus der Testklasse aufrufen, aber wieviel Sinn der Test dann noch macht ist fraglich.

Grundsätzlich sollte sich die protected Methode ja durch den Aufruf ein public Methode testen lassen. Sie wird ja wohl oder übel von irgend jemandem aufgerufen.
 

stg

Top Contributor
"stg is cool" - das mag ja sein; vermutlich cooler als ich; ich habe keinen blassen Dunst wie mir das bei meiner Fragestellung helfen soll.

Das ist meine Signatur ...


Die Aussage mit dem Lösungsvorschlag war auf diesen Abschnitt bezogen:
Grundsätzlich kannst du aber protected Methoden natürlich testen, indem du die Testklasse ins gleiche package schiebst, wie die zu testende Klasse. (Dafür muss die Testklasse auch nicht im selben Folder liegen wie der source code)
 

JunkerMartin

Mitglied
Ja natürlich; aus demselben Package kann man auf die protected Methoden zugreifen - klar. Mir schwebte eine Form der Unabhängikeit der Testmethode von dem Code vor. Bei meiner Beschäftigung mit Spring hat mich die Injection von privaten Attributen (ohne Setter) stark beeindruckt; es hätte mich sehr interessiert ob es in Richtung Methoden auch so was gibt. Nun habe ich mich ein paar Tage mit AOP und AspectJ beschäftigt; das ist auch toll aber hilft mir in meiner Frage nicht unbedingt weiter.
Es muss also so gehen wie Du vorgeschlagen hast.
Danke auf jeden Fall.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Zuverlässiges Automatisiertes Testen im eigenem Software-Unternehmen aufsetzen - How to? Allgemeine Java-Themen 12
Zrebna Automatisiertes Testen von größeren und komplexen Prozessen Allgemeine Java-Themen 56
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
Z Testen ob neuer Tag beginnt Allgemeine Java-Themen 37
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
B Eclipse WebSocket programmiert, kann es leider nicht testen. Allgemeine Java-Themen 15
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
perlenfischer1984 TestNG - Enum testen Allgemeine Java-Themen 1
perlenfischer1984 Testng : Funktion mit mehreren Parametern testen Allgemeine Java-Themen 5
F Testen von Methoden Allgemeine Java-Themen 3
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
P Testen von UIs Allgemeine Java-Themen 2
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
M Testen von verschiedenen Produktversionen Allgemeine Java-Themen 3
T EventBus testen Allgemeine Java-Themen 1
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 6
R Java Performance testen Allgemeine Java-Themen 18
B Mails testen Allgemeine Java-Themen 7
A AVL-Baum - Testen ob einer vorliegt Allgemeine Java-Themen 4
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
X Testen ob ein array leer ist Allgemeine Java-Themen 6
M Server-Responds testen, Code-Redundanz Allgemeine Java-Themen 3
fastjack Unit-Testen mit Mocks Allgemeine Java-Themen 6
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
H Thread Safety und Deadlocks testen Allgemeine Java-Themen 6
D Muss eine JNI Biblio testen (MAC OS X) Allgemeine Java-Themen 4
T Object auf Double, Int, String testen Allgemeine Java-Themen 5
aokai Testen von Klassen die abhängig von Stdlibs URL sind Allgemeine Java-Themen 3
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
R Testen von Applets - versch. Browser und Java Versionen? Allgemeine Java-Themen 4
V Quellcode auf "Güte" testen? Allgemeine Java-Themen 5
G JAR-DAtei testen Allgemeine Java-Themen 15
J Klasse auf Konstruktor oder Methode testen? Allgemeine Java-Themen 3
A Junit Exceptions testen Allgemeine Java-Themen 3
Z Testen welches BS benutzt wird Allgemeine Java-Themen 3
G Testen von RMI,TCP/IP, Servlets etc. Allgemeine Java-Themen 2
M Welches Linux zum Java testen? Allgemeine Java-Themen 5
P Testen mit JUnit Allgemeine Java-Themen 8
L Java6 update N bekommt neues Browser-Plugin, bitte testen. Allgemeine Java-Themen 7
G testen mit JUnit? Allgemeine Java-Themen 3
K Testen ob Methode existiert? Allgemeine Java-Themen 2
N Cashbook Management Testen Allgemeine Java-Themen 7
A testen ob Primzahl dauert bei größeren zahlen extrem lange Allgemeine Java-Themen 8
M String testen? Allgemeine Java-Themen 2
M String testen? Allgemeine Java-Themen 6
N auf typ testen? Allgemeine Java-Themen 3
M Programmierstill: Bitte testen anhand HTML-Tool Allgemeine Java-Themen 18
K Testen einer Klasse mit File Objekt als Parameter Allgemeine Java-Themen 6
M Bitte Testen: Mein Multi-File Editor Allgemeine Java-Themen 30
T GUI Testen Allgemeine Java-Themen 4
T GUI Testen Allgemeine Java-Themen 5
G Programm zum Testen der Striktheit von Java Allgemeine Java-Themen 9
H Laufwerk testen? Allgemeine Java-Themen 12
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
M Jemannd mit 1.4/1.3/1.2 zum Testen gesucht. Allgemeine Java-Themen 15
flashfactor Testen ob ein R/3 erreichbar bzw. noch am leben ist. Allgemeine Java-Themen 2
T Datum testen und Einsetzten Allgemeine Java-Themen 5
M Regular Expression - verschiedene Ausdrücke testen (grep | ) Allgemeine Java-Themen 5
P Dateinamen mit regulärem Ausdruck testen Allgemeine Java-Themen 9
P Dateinamen testen? Schreibrechte auf Verzeichnis testen? Allgemeine Java-Themen 8
G Public oder Private oder Protected Sinn Allgemeine Java-Themen 14
badfish Inerhalb der [void main] auf ein Objekt der [protected void] zugreifen Allgemeine Java-Themen 13
T Protected Classes/Members Allgemeine Java-Themen 2
O Methoden in abstrakter Klasse: public oder protected? Allgemeine Java-Themen 16
E einfache Frage zu protected Allgemeine Java-Themen 10
J Einbinden einer protected-Methode aus anderem Package Allgemeine Java-Themen 2
L Zugriffsschutz: protected und packages Allgemeine Java-Themen 6
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben