Vielleicht ist es eine triviale oder dumme Frage und natürlich habe ich auch schon gegoogelt, vermutlich unter den falschen Suchbegriffen, denn ich habe zahlreiche Anleitungen zu JUnit gefunden, Seiten, die sich damit beschäftigen, wie man eine Oberfläche testet und so weiter und so fort. Vielleicht ist mein Vorgehen auch einfach ungewöhnlich, aber wie auch immer, so ist die momentane Lage:
Ich habe ein Programmpaket geschrieben, das zur Abarbeitung bestimmter Aufgaben ein Regelwerk[SUP]1[/SUP] verwendet, welches zu Teilen auf Textdateien außerhalb des Jars zugreift.
Um nun sicherzustellen, dass das Hinzufügen neuer Regeln oder generell Änderungen an den Textdateien nicht ehemals funktionierende Dinge kaputt macht, habe ich einige Vorkehrungen getroffen: Neben verschiedenen komplexeren Tests[SUP]2[/SUP] habe ich auch solche geschrieben, die sich der durch JUnit vorgegebenen Möglichkeiten bedienen[SUP]3[/SUP]. Anfänglich waren diese nur für mich selbst bestimmt und da reicht mir die von Eclipse mitgebrachte Unterstützung für JUnit mit dem (hoffentlich) grünen Balken und dem Durchzählen der abgearbeiteten Tests vollkommen aus.
Da nun andere Mitarbeiter das Regelwerk verändern können sollen, suche ich eine Möglichkeit, diese Tests auch innerhalb der zum Programm gehörenden Oberfläche[SUP]4[/SUP] auf Knopfdruck anzubieten.
Die Testklassen könnte ich auflisten, die darin befindlichen Methoden aufzulisten, wäre sehr unhandlich, da dies nach jedem neu eingefügten Test ergänzt werden müsste und ich sicher welche vergessen würde. Außerdem fehlt dann immer noch die eigentliche Durchführung der Tests und die grafische Ausgabe über Erfolg und Misserfolg.
Ich hab gelesen, dass JUnit3 noch eine Text- und Swing-Oberfläche mitgebracht haben soll. Allerdings nutze ich JUnit4 und will auch nicht deswegen wechseln.
Bevor ich jetzt also anfange irgendwas mit Reflections selbst zu bauen (Ermitteln der public-Methoden und Ausführen derselben), wollte ich fragen, ob ihr eine bessere, vielleicht sogar zu JUnit gehörige Methode dazu kennt oder vielleicht jemand schon einmal selbst einen ähnlichen Weg gegangen ist.
So ganz trivial dürfte es ja nicht werden, auch wenn ich solche Features wie zufällige Ausführungsreihenfolge und so weiter der einzelnen Tests gar nicht bräuchte.
Wobei… Vermutlich müsste man sich nur für jede Methode ein Objekt der Klasse erstellen, auf dem die Testmethode aufrufen und dann irgendwie herausbekommen, ob ein fail() aufgerufen wurde.
Dennoch muss ich ja nicht sinnlos das Rad neu erfinden:
Gibt es schon eine Möglichkeit, JUnit-Tests programmgesteuert selbst aufzurufen?
[HR][/HR]
Fußnoten:
- Das Regelwerk basiert auf regulären Ausdrücken.
- Diese Tests finden auf einer Datenbank statt.
- Diese liegen somit in meinem Programmpaket. Und davon gibt es inzwischen sehr sehr viele, die meist ganz kleine Dinge testen, dafür ist JUnit einfach unheimlich praktisch.
- Wohlgemerkt ist hier nicht Eclipse gemeint, sondern die selbst geschriebene GUI des Programms (oder genauer, eine der Oberflächen meines Programmpakets).