Ausgewählte Packages und Prozeduren
Wir werfen nun einen genaueren Blick auf ein paar ausgewählte Packages und Prozeduren der Standardbibliothek.
Wir werden mit Packages beginnen, die den Zugriff auf Komponenten abhängig von der verwendeten GUI Technologie ermöglichen, also JavaFX, Swing, Eclipse/SWT und Web Komponenten.
Das Checkbox Package
Wir beginnen nun mit der genaueren Betrachtung der Packages
qfs.fx.checkbox
qfs.swing.checkbox
,
qfs.swt.checkbox
oder qfs.web.checkbox
.
Hier sind einige Prozeduren aus diesen Packages:
- select Selektiert ein Kontrollkästchen. Wenn sich das Kontrollkästchen bereits im ausgewählten Zustand befindet, wird keine Aktion ausgeführt.
- deselect Deselektiert ein Kontrollkästchen. Wenn sich das Kontrollkästchen bereits im nicht-ausgewählten Zustand befindet, wird keine Aktion ausgeführt.
- set Setzt ein Kontrollkästchen auf den angegebenen Zustand (true oder false).
Für jede dieser Prozeduren wird die QF-Test ID der Kontrollkästchenkomponente als variables Argument übergeben. Die Bibliothek kümmert sich um die Überprüfung, dass der Zustand des Kontrollkästchens wie erwartet gesetzt wurde.
Die anderen Prozeduren in diesem Package folgen demselben Muster.
Das Combobox bzw. Combo Package
Die Packages qfs.fx.combobox
, qfs.swing.combobox
,
qfs.swt.combo
und qfs.web.select
enthalten Prozeduren, um Werte
in einer Combobox zu selektieren.
Die wichtigsten Prozeduren sind:
- setValue Selektiert einen Wert in der Liste der Combobox.
- getItemCount Liefert die Anzahl der Einträge zurück.
Das General Package
Die Packages qfs.fx.general
, qfs.swing.general
,
qfs.swt.general
und qfs.web.general
enthalten allgemeine
Prozeduren für GUI-Elemente.
Die wichtigsten Prozeduren sind:
- setLocation Setzt die Position der Komponente mittels angegebenen Koordinaten.
- setSize Setzt die Größe der Komponente.
Das List Package
Die Packages qfs.fx.list
, qfs.swing.list
, qfs.swt.list
und
qfs.web.list
enthalten allgemeine Prozeduren für Listen.
Die wichtigsten Prozeduren sind:
- getItemCount Zählt die Einträge einer Liste.
Das Menu Package
Die Packages qfs.fx.menu
, qfs.swing.menu
und
qfs.swt.menu
erlauben es Ihnen, in einfacher Weise Einträge und auch
Kontrollkästchen in Menüs oder Untermenüs auszuwählen bzw. zu setzen. Die wichtigsten
Prozeduren sind:
- selectItem Wählt einen Eintrag in einem Menü aus.
- selectSubItem Wählt einen Eintrag in einem Untermenü aus.
An alle diese Prozeduren muss die QF-Test ID der Menükomponente wie auch des Eintrags bzw. Kontrollkästchens übergeben werden. Die Benutzung variiert leicht, abhängig von der jeweiligen Art der Prozedur.
Das Table Package
Die Packages qfs.fx.table
, qfs.swing.table
, qfs.swt.table
und qfs.web.table
enthalten Hilfsprozeduren für Tabellen.
- getRowCount Liefert die aktuelle Zeilenanzahl einer Tabelle zurück. Diese Prozedur verwendet technologiespezifische Methoden um an die Anzahl zu kommen.
- getColumnCount Liefert die aktuelle Spaltenanzahl einer Tabelle zurück. Diese Prozedur verwendet technologiespezifische Methoden um an die Anzahl zu kommen.
- selectCell Selektiert eine angegebene Tabellenzelle.
Das Tree Package
Die Bibliothek stellt in den Packages qfs.fx.tree
, qfs.swing.tree
,
qfs.swt.tree
und qfs.web.tree
einige
einfache Prozeduren zur Manipulation von Bäumen zur Verfügung. Das
sind:
- collapseNode Klappt einen Baumknoten ein. Ist der Knoten bereits eingeklappt, wird keine Aktion ausgeführt. Diese Prozedur besitzt drei einzelne Parameter für Baum und Knoten
- expandNode Klappt einen Baumknoten aus. Ist der Knoten bereits expandiert, wird keine weitere Aktion ausgeführt. Diese Prozedur besitzt drei einzelne Parameter für Baum und Knoten.
- selectNode Selektiert einen angegebenen Baumknoten.
Jede der Prozeduren benötigt die QF-Test ID des Baumknotens als Argument.
Das Cleanup Package
Die Packages qfs.fx.cleanup
, qfs.swing.cleanup
und qfs.swt.cleanup
bieten eine gute Unterstützung für das Aufräumen der SUT
Umgebung, wenn unerwartet eine Exception auftritt. Stellen Sie
sich zum Beispiel vor, dass eine Exception geworfen wird, während auf
ein Menü des SUTs zugegriffen wird. Die Exception bewirkt, dass der
Ausführungspfad innerhalb Ihrer Testsuite zu einem Exception Handler
umgeleitet wird - oder zu einem "impliziten" Exception Handler. Das
bedeutet, dass der normale Ausführungspfad, der das geöffnete Menü in
der Regel wieder ordnungsgemäß geschlossen hätte, unterbrochen
wurde. Ohne eine entsprechende Aktion kann dieses Menü geöffnet bleiben
und somit andere Ereignisse an das SUT blockieren.
Hier sehen Sie die wichtigsten Prozeduren innerhalb des Packages:
- closeAllModalDialogs bewirkt, dass modale Dialoge des SUTs geschlossen werden. Nur für Swing und FX verfügbar!
- closeAllDialogsAndModalShells bewirkt, dass alle Dialoge und modalen Shells geschlossen werden. Nur für Eclipse/SWT verfügbar!
- closeAllMenus Schließt alle offenen Menüs des SUT.
Das Konzept zur Behandlung von impliziten Exceptions ist von großer Bedeutung, denn eine Exception in einem einzigen Testfall soll nicht zum Beenden des gesamten Testlaufs führen. Lediglich der aktuelle Testfall soll abgebrochen werden, dann sollte es mit dem nächsten Testfall weitergehen.
Aus diesem Grund wird eine Exception innerhalb eines Testfalls auf dieser Ebene gefangen und nicht nach oben propagiert. Dies verhindert den Abbruch des gesamten Testlaufs. Der Fehlerstatus wird jedoch stets korrekt im Protokoll und Report festgehalten.
Benutzt der Testfall eine Abhängigkeit, wird die Exception an den Catch Knoten derselben übergeben, falls ein solcher vorhanden ist. Diese Art der Behandlung von Exceptions (und Fehlern) wird im Kapitel Abhängigkeiten des Handbuchs erklärt.
Das Run-log Package
Das Package qfs.run-log
enthält Prozeduren, um Meldungen in das Protokoll zu
schreiben.
Hier sehen Sie die Liste von verfügbaren Prozeduren innerhalb des Packages:
- logError Schreibt eine Fehlermeldung ins Protokoll.
- logWarning Schreibt eine Warnung ins Protokoll.
- logMessage Schreibt eine Meldung ins Protokoll.
Das Run-log.Screenshots Package
Das qfs.run-log.screenshots
Package enthält Prozeduren,
die Bildschirmabbilder ins Protokoll schreiben und einige Hilfsprozeduren.
Hier sehen Sie die Liste von verfügbaren Prozeduren innerhalb des Packages:
- getMonitorCount Liefert die Anzahl der an den Computer angeschlossenen Monitore.
- logScreenshot Schreibt ein Bildschirmabbild des aktuellen Monitors ins Protokoll.
- logImageOfComponent Schreibt ein Bildschirmabbild einer Komponente ins Protokoll.
- logScreenshotOfMonitor Schreibt ein Bildschirmabbild eines angegebenen Monitors ins Protokoll.
Das Shellutils Package
Das qfs.shellutils
Package beinhaltet Prozeduren für die wichtigsten Shell-Kommandos.
Hier sehen Sie die Liste von verfügbaren Prozeduren innerhalb des Packages:
- copy Kopiert eine angegebene Datei oder ein Verzeichnis an eine neue Stelle.
- deleteFile Löscht eine angegebene Datei.
- exists Prüft, ob eine angegebene Datei oder ein Verzeichnis existiert.
- getBasename Gibt den Dateinamen einer Datei zurück.
- getParentDirectory Gibt die Verzeichnisstruktur einer Datei zurück.
- mkdir Erzeugt ein Verzeichnis. Noch nicht existierende Verzeichnisse werden angelegt.
- move Verschiebt eine angegebene Datei oder ein Verzeichnis.
- touch Erzeugt eine Datei.
- removeDirectory Löscht ein angegebenes Verzeichnis.
Das Utils Package
Das Package qfs.utils
enthält nützliche Prozeduren für häufig auftretende Anforderungen der Testentwicklung.
Hier sehen Sie einige Prozeduren des Packages:
- getDate Gibt einen String zurück, der ein Datum enthält. Standardmäßig wird das aktuelle Datum zurückgegeben. (Andere Daten sind konfigurierbar.)
- getTime Gibt einen String zurück, der eine Zeit enthält. Standardmäßig wird die aktuelle Zeit zurückgegeben. (Andere Zeiten sind konfigurierbar.)
- logMemory Schreibt den aktuellen Speicherverbrauch ins Protokoll.
- printVariable Gibt den Inhalt einer spezifizierten Variable auf der Konsole aus.
- printMessage Gibt den Inhalt einer angegebenen Nachricht auf der Konsole aus.
- writeMessageIntoFile Schreibt einen angegebenen String in eine angegebene Datei.
Das Database Package
Das Package qfs.database
enthält nützliche Prozeduren, um mit
Datenbanken zu interagieren.
Bitte beachten Sie, dass die jar-Datei mit dem Datenbanktreiber vor dem Start
von QF-Test ins qftest
Pluginverzeichnis kopiert werden muss.
Für weitere Informationen über den Aufbau einer Datenbankverbindung kontaktieren Sie bitte einen Entwickler oder werfen Sie einen Blick auf www.connectionstrings.com.
Die wichtigsten Prozeduren sind:
- executeSelectStatement Führt einen angegebenen SQL-Select-Befehl aus. Das Ergebnis wird zum einen in die globale Variable "resultRows" des Jython Variablenstacks geschrieben und ist somit in jedem Jython Skript verfügbar. Zum anderen wird das Ergebnis auch in eine Gruppenvariable mit dem Standardnamen "resultGroup" geschrieben und ist somit direkt von QF-Test Knoten aus ansprechbar.
- executeStatement Führt einen angegebenen SQL Befehl aus. Hier kann jedes beliebige SQL Kommando ausgeführt werden.
Das Check Package
Das qfs.check
Package enthält Prozeduren, die Checks ausführen.
Die wichtigsten Prozeduren sind:
- checkEnabledStatus Überprüft, ob eine Komponente en- bzw. disabled ist. Im Fehlerfall wird von der Prozedur ein entsprechender Fehler ins Protokoll geloggt.
- checkSelectedStatus Überprüft, ob eine Komponente selektiert bzw. nicht selektiert ist. Im Fehlerfall wird von der Prozedur ein entsprechender Fehler ins Protokoll geloggt.
- checkText Überprüft den Text einer Komponente. Im Fehlerfall wird von der Prozedur ein entsprechender Fehler ins Protokoll geloggt.
Das Databinder Package
Das Package qfs.databinder
enthält Prozeduren zur Ausführung innerhalb eines
Datentreiber Knotens, um Daten für datengetriebenes Testen zu binden.
Die wichtigsten Prozeduren sind:
- bindList Bindet eine Liste von Werten an eine Variable. Die Werte sind durch Leerzeichen oder das als Parameter übergebene Trennzeichen getrennt.
- bindSets Bindet Sätze von Werten an einen Satz von Variablen. Die Sätze von Werten sind durch Zeilenumbrüche getrennt, die Werte innerhalb eines Satzes durch Leerzeichen oder das als Parameter übergebene Trennzeichen.