GUI-Engines

Swing, JavaFX und SWT können zusammen in einer Anwendung kombiniert werden, nicht nur in Form von getrennten Fenstern, sondern auch durch Einbettung von Komponenten der einen in Fenstern der anderen Art. QF-Test unterstützt das Testen solcher gemischten Anwendungen.

4+ Auch Webseiten können in Java-Anwendungen mit Hilfe von eingebetteten Browsern, wie der WebView Komponente bei JavaFX oder dem JxBrowser, integriert werden. QF-Test unterstützt diverse Kombinationen solcher hybriden Anwendungen.

Zu diesem Zweck wurde das Konzept einer GUI-Engine eingeführt. Eine GUI-Engine ist für Aufnahme und Wiedergabe in einem GUI Toolkit Thread zuständig. Normale Anwendungen haben nur einen solchen Thread. Wie oben beschrieben, sind aber auch Kombinationen von Swing, JavaFX und SWT möglich, die je einen eigenen Thread benötigen und somit auch zwei GUI Engines. Theoretisch ist es sogar möglich, mehrere GUI-Engines der selben Art zu haben, z.B. wenn mehrere Instanzen der SWT Display Klasse erzeugt werden.

Hinweis Die erste GUI-Engine, die in einem SUT erzeugt wird, heißt auch Default-Engine. Sie wird immer dann verwendet, wenn keine GUI-Engine explizit angegeben wird, insbesondere bei 'SUT-Skript' Knoten mit leerem 'GUI-Engine' Attribut.

Jede GUI-Engine wird in QF-Test über ein Kürzel für das GUI Toolkit und eine Zahl identifiziert. awt0, fx0 und swt0 sind die primären Engines für AWT/Swing, JavaFX und SWT. Wenn Sie nicht eine sehr spezielle Anwendung haben wird es niemals eine Engine namens awt1, fx1 oder swt1 geben, so dass die Bezeichnung awt, fx bzw. swt normalerweise ausreicht. Beim Aufnehmen verwendet QF-Test immer die kurze Variante.
Hinweis Wenn Ihre Anwendung nur die Default-Engine benutzt, können Sie auf Engine Namen ganz verzichten, oder diese explizit über das Kürzel default adressieren.

Im Regelfall werden Engine Namen während der Aufnahme automatisch richtig gesetzt. Nur wenn Knoten händisch eingefügt werden, ist auf das richtige Eintragen zu achten. In einer Testsuite kommen Engine Namen in folgenden Knoten vor:

  • 'Warten auf Client' Knoten. Wird nur benötigt wenn Ihre Anwendung AWT/Swing, JavaFX und SWT kombiniert und Sie auf die Initialisierung einer spezifischen GUI-Engine warten wollen.
  • 'Fenster' Knoten. Die Engine eines 'Fenster' Knotens ordnet das Fenster und alle entsprechenden Knoten der jeweiligen Engine zu. Eingebettete Komponenten der jeweils anderen Art werden in einen Knoten für ein Pseudo-Fenster ausgelagert.
  • 'SUT-Skript' Knoten. Ein 'SUT-Skript' wird auf dem Event Thread des SUT ausgeführt. Für eine kombinierte AWT/Swing, JavaFX und/oder SWT-Anwendung muss daher festgelegt werden, ob das Skript auf dem AWT/Swing, JavaFX oder dem SWT Thread laufen soll. Daher kann ein 'SUT-Skript' Knoten nur Komponenten einer Art ermitteln und mit ihnen interagieren.
  • 'Dateiauswahl' Knoten. Für Swing-Anwendungen wird der 'Dateiauswahl' Knoten nur selten benötigt, da der Swing JFileChooser in Java implementiert ist und vollständig von QF-Test angesteuert werden kann. Der SWT FileDialog ist dagegen analog zum AWT FileChooser auf Betriebssystem Ebene implementiert, so dass QF-Test keinen Zugriff auf die Komponenten innerhalb des Dialogs hat. Auch der JavaFX FileChooser bedarf besonderer Behandlung. Daher muss das Auswählen einer Datei mit Hilfe eines 'Dateiauswahl' Knotens simuliert werden. Da dieser Knoten nicht explizit mit einem 'Komponente' oder 'Fenster' Knoten assoziiert ist, muss die Engine im Knoten angegeben werden.