Hi,
nach vielfältigen Irrungen und Wirrungen, endlosen Debug Sitzungen und dementsprechend hochwertigem Code-Ergebnis bin ich seit einiger Zeit unter die JUnit Nutzer gegangen. Stück für Stück baut man die Nutzung aus und jetzt bin ich kürzlich an den Punkt gekommen, wo ich mir wünsche, dass ich die GUI ebenfalls intensiver testen möchte. De facto geht es dabei wohl bereits über den Klassischen Klassen / Unit Test hinaus, evt. lässt sich aber ja JUnit trotzdem dafür ganz gut nutzen?
Mir geht es im Prinzip um eine Art Fernsteuerung für die GUI. D.h. ich würde gern aus meinen TestCases heraus die Methoden aufrufen, die sonst von den Buttons, Menüs etc. gerufen werden. Das als solches ist ja auch ganz einfach und läuft dann in Windeseile ab.
Aber: Wenn der Tester nochmal mit einem Blick kontrollieren soll, wie das Ergebnis aussieht, dann wird es - bisher - schwierig. Mein Gedanke ist, ich mache was ich auch immer, lasse dann die Applikation stehen, bis sie regulär geschlossen wird und setze dann meinen Test fort. Genau hier hänge ich derzeit.
Ich hab's so probiert:
Die ersten beiden Zeilen sind der eigentliche Testfall. pilot.isRunning() geht auf false, sobald der Nutzer das Fenster schließt - in der "Vollversion" (also kein Test) geht das problemlos. Bei diesem Code bekomme ich abwechselnd die Meldungen "running 1" und "running 2", also wie erwartet. Aber "Tschau!" bekomme ich nie! Obwohl "running 1" / "running 2" irgendwann aufhört, das irritiert mich etwas.
Hab ich was übersehen? Ein System.Exit() ist dabei - soweit ich das korrekt überprüft hab - nicht beteiligt. Jemand eine Idee, bzw. sowas vielleicht schon mal mit einem anderen Konstrukt gemacht? Es geht mir wie gesagt darum, den Testfall offen zu halten, bis das Fenster geschlossen wird und dann ganz normal weiter zu machen. Mit konstant getimten Testfällen klappt das auch wunderbar, aber hier...?
Danke schon mal im Voraus!
Stephan
nach vielfältigen Irrungen und Wirrungen, endlosen Debug Sitzungen und dementsprechend hochwertigem Code-Ergebnis bin ich seit einiger Zeit unter die JUnit Nutzer gegangen. Stück für Stück baut man die Nutzung aus und jetzt bin ich kürzlich an den Punkt gekommen, wo ich mir wünsche, dass ich die GUI ebenfalls intensiver testen möchte. De facto geht es dabei wohl bereits über den Klassischen Klassen / Unit Test hinaus, evt. lässt sich aber ja JUnit trotzdem dafür ganz gut nutzen?
Mir geht es im Prinzip um eine Art Fernsteuerung für die GUI. D.h. ich würde gern aus meinen TestCases heraus die Methoden aufrufen, die sonst von den Buttons, Menüs etc. gerufen werden. Das als solches ist ja auch ganz einfach und läuft dann in Windeseile ab.
Aber: Wenn der Tester nochmal mit einem Blick kontrollieren soll, wie das Ergebnis aussieht, dann wird es - bisher - schwierig. Mein Gedanke ist, ich mache was ich auch immer, lasse dann die Applikation stehen, bis sie regulär geschlossen wird und setze dann meinen Test fort. Genau hier hänge ich derzeit.
Ich hab's so probiert:
Java:
pilot.switchPage( Constants.PAGE_LIVE );
( (PageLive) pilot.getPage() ).updateModel( model );
try {
while ( pilot.isRunning() ) {
logger.debug( "running 1" );
SwingUtilities.invokeAndWait( new Runnable() {
public synchronized void run() {
logger.debug( "running 2" );
try {
wait( 500 );
} catch ( InterruptedException e ) {}
}
});
}
logger.info( "Tschau!" );
Die ersten beiden Zeilen sind der eigentliche Testfall. pilot.isRunning() geht auf false, sobald der Nutzer das Fenster schließt - in der "Vollversion" (also kein Test) geht das problemlos. Bei diesem Code bekomme ich abwechselnd die Meldungen "running 1" und "running 2", also wie erwartet. Aber "Tschau!" bekomme ich nie! Obwohl "running 1" / "running 2" irgendwann aufhört, das irritiert mich etwas.
Hab ich was übersehen? Ein System.Exit() ist dabei - soweit ich das korrekt überprüft hab - nicht beteiligt. Jemand eine Idee, bzw. sowas vielleicht schon mal mit einem anderen Konstrukt gemacht? Es geht mir wie gesagt darum, den Testfall offen zu halten, bis das Fenster geschlossen wird und dann ganz normal weiter zu machen. Mit konstant getimten Testfällen klappt das auch wunderbar, aber hier...?
Danke schon mal im Voraus!
Stephan