Wie auf protected Methoden zugreifen?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie auf protected Methoden zugreifen?

    Hallo,
    hab folgendes Szenario:

    Eine Klasse bietet mehrere Methoden, eine davon ist public static und ruft zufälligerweise eine von n protected static Methoden auf.

    Ich befinde mich im Test-based Development, das heißt ich validiere meine Arbeit ständig durch Unit und Funktionstests.

    Eine derartige Klasse muss als unit getestet werden, das von mir genutzt Framework bietet Test Werkzeuge dafür an. Das Problem, wegen der OOP Kapselung kommen diese Werkzeuge natürlich nicht an die protected Methoden ran.
    Meine Frage ist, wie kann ich Zugriff auf die protected Methode am einfachsten realisieren?

    Ein Weg wäre eine Wrapperklasse, die den Zugriff public macht, der Nachteil, ich muss eine Menge Methoden Signaturen nochmal schreiben, was ich unheimlich ungerne mache.

    Ich kann auch nicht zeitweise mal protected in public ändern, weil die Tests automatisiert ablaufen, sprich dieser Test würde sehr oft automatisiert ausgeführt werden, da kann ich nicht jedes mal die Kapselung aufbrechen.

    Gibt es so etwas wie ne Reflection und Introspection Kapazität, damit ich das generisch machen kann?
    SQL Injection kitteh is...

  • #2
    So was z.B.?
    http://de3.php.net/oop5.reflection

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Comment


    • #3
      Ja, aber ich finde dort keinen Weg, die Kapselung zu durchbrechen, welche Methoden ich habe, krieg ich so aufgelistet, aber darauf zu zugreifen hab ich noch nicht geschafft
      SQL Injection kitteh is...

      Comment


      • #4
        Du kannst einen bestehende Klasse nicht via Reflection ändern. Aber du kannst sie genauer analysieren. Fragt sich nur wozu, denn dein Ziel ist ja nur die Änderung aller private und protected in public. Dazu kannst du auch gleich die Datei mit der Klasse einlesen, Code umschreiben und eval'n. Ich würde das aber lassen ...

        Eigentlich testet man doch das Interface der Klasse, also insbesondere nicht die private/protected Methoden. Wenn es doch mal sein muß, würde ich eine Testklasse ableiten, die das nötigste public macht. Soviel Arbeit muß dann halt sein.

        Comment


        • #5
          Note: Trying to invoke private, protected or abstract methods will result in an exception being thrown from the invoke() method.
          Hmpf!
          Naja, dann wohl ableitung ... :/
          SQL Injection kitteh is...

          Comment


          • #6
            Der Google Testing Blog ist in diesem Zusammenhang bestimmt was für dich!

            Comment

            Working...
            X