JUnit Tests für GUI / Oberflächen

Status
Nicht offen für weitere Antworten.
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:

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
 
der Lösung... Es ist ja oft so, nachdem man im Forum geschrieben hat, probiert man noch etwas rum und schon macht jede Zeile Code ganz etwas anderes als vorher. ;) Ok, nicht ganz so, aber wenn ich

Java:
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

rausnehme, endet der Testfall zumindest planmäßig.

Falls jemand noch 'ne Idee dazu hat, immer her damit!
 

sliwalker

Top Contributor
Hi,

es gibt professionelle Tools die man zum GUI-Testen verwenden kann. Wir verwenden QF-Test von Quality First.
Quality First Software GmbH & QF-Test - Das Java GUI Testtool

Dort kann man Testfälle hinterlägen, die man vorher einmal "aufnehmen" muss. Das ganze lässt sich durch einen Phyton-Ableger, genannt Jython, auch per Skriptsprache steuern.

Sehr gutes Tool, nur wehe Du entscheidest Dich einem Panel noch ein Überpanel zu geben. Dann kann es die Komponentenhierachie nicht mehr korrekt auflösen und scheitert.

Es ist sehr viel Aufwand, den man da rein stecken muss. Wir haben zwei Leute damit beschäftigt. Änderungen bei Maskenänderungen verursachen zwar (wenn man es kann) nur wenig Aufwand, aber die Pflege des Ganzen ist schon aufwändig.

Keine Ahnung ob es eine Testversion gibt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
P No JUnit tests found Allgemeine Java-Themen 5
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
M Junit Tests durchführen Allgemeine Java-Themen 18
M JUnit Tests vs. DBUnit Tests Allgemeine Java-Themen 3
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
T Junit-Tests in Java Klasse ausführen Allgemeine Java-Themen 26
C JUnit Tests Allgemeine Java-Themen 4
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
G JUnit Tests Allgemeine Java-Themen 7
M JUnit und dynamische Tests Allgemeine Java-Themen 11
K JUnit: Tests über ant aufrufen Allgemeine Java-Themen 2
B Junit Test Allgemeine Java-Themen 8
J Junit surefire: enrich test information Allgemeine Java-Themen 0
J Junit start surefire for manual testing Allgemeine Java-Themen 1
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
O Maven - JUnit - H2 Allgemeine Java-Themen 1
C JUNIT - ANT - build.xml Allgemeine Java-Themen 0
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? Allgemeine Java-Themen 1
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
P JUnit Allgemeine Java-Themen 2
B jUnit 4: Wie protokolliert man Testergebnisse? Allgemeine Java-Themen 1
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
M JUnit Test Suites Allgemeine Java-Themen 2
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 6
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
A JUnit/Hashcode Problem Allgemeine Java-Themen 5
X Problem mit URLClassLoader und JUnit Allgemeine Java-Themen 3
N JUnit Allgemeine Java-Themen 13
M JVM Probleme JUnit Allgemeine Java-Themen 2
G NUnit Features in JUnit Allgemeine Java-Themen 2
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
A JUnit problem Allgemeine Java-Themen 9
T Organisation von Junit Testfällen? Allgemeine Java-Themen 2
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
U Fehler: Hauptklasse org.junit.runner.JUnitCore konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
1 JUnit Test Suit Allgemeine Java-Themen 2
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
M JUnit TestSuite erstellen Allgemeine Java-Themen 2
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G Testcases mit Junit auf private-Methode Allgemeine Java-Themen 7
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
C JUnit und das Zulassen von RuntimeExceptions Allgemeine Java-Themen 5
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
T JUnit-Log auslesen Allgemeine Java-Themen 13
fastjack JUnit Supplementary Classes Allgemeine Java-Themen 4
O Junit Reports / Logs als XML ohne Maven/Ant Allgemeine Java-Themen 7
M Junit und Mocks Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
S JUnit: Erzeugen einer IOException Allgemeine Java-Themen 9
G JUnit Test Allgemeine Java-Themen 5
S JUnit - was mocken, was nicht? Allgemeine Java-Themen 3
S JUnit TesSuite und @Repeat Allgemeine Java-Themen 2
M Junit und Mocks bei JDBC Daos Allgemeine Java-Themen 8
M JUnit Problem mit AssertionFailedError Allgemeine Java-Themen 2
B Testfälle mit JUnit Allgemeine Java-Themen 4
S JUnit Allgemeine Java-Themen 15
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
G ANT Tutorial . Schritte bzgl. Junit Bibliothek Allgemeine Java-Themen 4
A JUnit Reports zu groß für XSLT Allgemeine Java-Themen 4
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
K Junit: Frage zum Ablauf Allgemeine Java-Themen 3
S JUnit und EasyMock Allgemeine Java-Themen 7
B Wie alt ist JUnit? Allgemeine Java-Themen 2
A Junit Exceptions testen Allgemeine Java-Themen 3
P Testen mit JUnit Allgemeine Java-Themen 8
7 JUnit: Testproblem. Allgemeine Java-Themen 23
G Ant + JUnit Allgemeine Java-Themen 2
F JUnit unter Ant Allgemeine Java-Themen 3
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
G testen mit JUnit? Allgemeine Java-Themen 3
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
M Ant + Junit + Testclass in Jar Allgemeine Java-Themen 3
G Junit 4 - TestSuite Allgemeine Java-Themen 6
B JUnit Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
S JUnit will ins Netz! Allgemeine Java-Themen 2
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
H JUnit Allgemeine Java-Themen 5
N Problem mit Ant und JUnit Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben