Handbuch

4.0.3+44.8
ResetListener

Während der Testentwicklung ist es manchmal notwendig alle QF-Test Variablen zu löschen, sowie alle gestarteten Clients zu stoppen. Hierdurch wird sicher gestellt, dass eine spätere / darauffolgende Testausführung nicht wegen eines Seiteneffekts einer vorherigen fehlschlägt. Dieses Verhalten kann z.B. wegen fehlerhaft gesetzter globaler Variablen bzw. wegen eines sich im falschen Zustand befindenden Clients passieren.

Für das Zurücksetzen aller QF-Test Variablen und Clients bietet sich Menüaktion »Wiedergabe«-»Alles zurücksetzen« an. Diese Aktion könnte aber noch für weitere Anwendungsfälle verwendet werden. Zum einen kann es nach deren Ausführung vorkommen, dass zu viele Variablen gelöscht wurden oder es sollen auch alle globalen Skriptvariablen aus Jython bzw. Groovy zurückgesetzt werden, welche standardmäßig nicht zurückgesetzt werden. Ein anderer Anwendungsfall könnte das absichtliche Deregistrieren eines TestRunListeners sein. Um diese Anforderungen abzudecken und um kundenspezifische Nachbedingungen zu ermöglichen, wurde der ResetListener eingeführt.

Ein ResetListener stellt jede bei QF-Test registrierte Klasse dar, die das ResetListener Interface de.qfs.apps.qftest.extensions.qftest.ResetListener realisiert. Zum Verwalten der bei QF-Test registrierten Klassen, stellt der Runcontext die Methoden addResetListener, isResetListenerRegistered und removeResetListener bereit.

Das ResetListener Interface besteht hierbei aus den folgenden Methoden:

 
 
beforeReset()
Diese Methode wird aufgerufen, bevor alle Variablen und Clients zurückgesetzt werden. Die Implementierung dieser Methode kann weiterhin verhindern, dass bestimmte von QF-Test gestartete SUTs durch das Ausführen von »Wiedergabe«-»Alles zurücksetzen« beendet werden.
Rückgabewert Ein java.util.Set<String> Objekt, dass die Namen aller Clients beinhaltet, die nicht beendet/zurückgesetzt werden sollen.
 
afterReset()
Diese Methode wird aufgerufen, nachdem alle Variablen und Clients zurückgesetzt wurden.
 
 

Das folgende Beispiel beschreibt die Implementierung und Registrierung eines ResetListners, der verhindert, dass die QF-Test Variable "client" durch den Reset gelöscht wird, als auch dass das "client" SUT beendet wird.

from java.util import HashSet
from de.qfs.apps.qftest.extensions.qftest import ResetListener
from de.qfs.apps.qftest.shared.exceptions import UnboundVariableException

class L(ResetListener):
    def beforeReset(self):
        try:
            self.client = rc.lookup("client")
            h = HashSet()
            h.add(self.client)
            return h
        except UnboundVariableException:
            self.client = None
    def afterReset(self):
        if self.client != None:
            rc.setGlobal("client", self.client)

global resetListener
try:
    resetListener
except:
    resetListener = L()
    rc.addResetListener(resetListener)
          
Beispiel 44.47:  Beispielhafte Implementierung eines ResetListeners