Schnittstelle 'WMQTest'
Für IBM® MQ Explorer geschriebene Tests müssen einer Java™-Klasse zugeordnet sein, die die bereitgestellte Klasse 'WMQTest' erweitert. In diesem Thema werden die Schnittstelle und die Operation der bereitgestellten Methoden erläutert.
- Testattribute - Attribute für Ihr Testobjekt
- Tests erstellen - Der Konstruktor für Testobjekte
- Teststruktur - Anfang und Ende der Tests
- Tests ausführen - Der Textkörper für Tests
- Benutzereinstellungen - Zugriff auf die Einstellungen
- Tests beenden - Tests als abgeschlossen markieren
- Testergebnisse erstellen - Testergebnisse erstellen
- Vorgehen bei Abbrüchen - Was geschieht, wenn Benutzer Tests abbrechen wollen
- Testdokumentation - Weitere Informationen zu Tests bereitstellen
Testattribute
Definieren Sie Tests in der Plug-in-Manifest-Datei (plugin.xml) unter Verwendung einer Reihe von Attributen. Die Attribute für Tests werden in der folgenden Tabelle aufgeführt.
Attribut | Beschreibung |
---|---|
id | Eine Zeichenfolge, die eine eindeutige Kennung für einen Test darstellt. |
Namen | Ein aussagekräftiger Name für den Test. |
Klasse | Der Name der Java-Klasse, die den Quellcode für den Test enthält. |
testset | Eine Zeichenfolge, die die Gruppe definiert, in der der Test angezeigt werden soll. Ein Beispiel ist wmq, wodurch der Test in der Kategorie Warteschlangenmanagertests angezeigt wird. |
testsubset | Eine Zeichenfolge, die die Untergruppe definiert, in der der Test angezeigt werden soll. Ein Beispiel ist Warteschlangen, wodurch der Test in der Kategorie Warteschlangen angezeigt wird. |
Beschreibung | Eine kurze Beschreibung dessen, was durch den Test geprüft wird. |
furtherinfo | Die Position eines HTML- oder XHTML-Dokuments, das weitere Informationen über den Test enthält. Dieses Dokument wird in IBM MQ Explorer angezeigt, wenn Sie auf den Test im Dialog 'Tests ausführen' oder auf ein Testergebnis in der Ansicht 'Testergebnis' doppelklicken. |
Sie geben die Werte für diese Attribute in der Datei 'plugin.xml' an, um den Test zu definieren. Auf diese Attribute kann auch programmgesteuert zugegriffen werden, indem Sie die in der folgenden Tabelle aufgeführten 'WMQTest'-Methoden verwenden.
Methode | Beschreibung |
---|---|
getTestID() |
Gibt die Testkennung zurück. |
getTestName() |
Gibt den Namens des Tests zurück. |
getDescription() |
Gibt die Beschreibung des Tests zurück. |
getTestSet() |
Gibt eine Kennung für das Satz von Tests-Objekt zurück, das als übergeordnetes Objekt für den Test dient. |
getFurtherInfoPath() |
Gibt die Position des XHTML- oder XHTML-Dokuments zurück, das weitere Informationen über den Test enthält. |
Tests erstellen
Die IBM MQ Explorer-Testengine erstellt Instanzen der Testobjekte unter Verwendung der bereitgestellten Konstruktorfunktion WMQTest()
. Es ist nicht erforderlich, diese Konstruktorfunktion in Unterklassen zu erweitern.
Teststruktur
Die WMQTest
-Methode runTest
definiert den Hauptteil des Tests und wird zur Ausführung eines Tests aufgerufen.
Der Abschluss der Methode runTest
bedeutet nicht auch den Abschluss des Tests. Dieser muss explizit durch Verwendung der Methode testComplete
angegeben werden. Sie können Tests so implementieren, dass sie Objektdaten asynchron abrufen.
Die Methode runTest
übergibt eine Anforderung zur Datenabfrage über Objekte und Testläufe an die Empfangsmethode, die dann die Antwort erhält. Hierdurch kann der Test auf Daten warten, ohne dass Sie eine Abfrage für das Thread-Ergebnis implementieren müssen. Dies wird in Beispiel 3 gezeigt.
Falls ein
manueller Wartestatus als Teil des Tests benötigt wird, können Sie den
Objektmonitor für das Testobjekt verwenden, um die
Java-Methoden
wait
und notify
einzusetzen. Das Threading der Testengine wird implementiert, ohne die Objektmonitore einzelner Testobjekte zu verwenden.
Tests ausführen
Die IBM MQ Explorer-Testengine ruft runTest(WMQTestEngine, IProgressMonitor,contextObjects,treeNode)
auf, um den Test auszuführen. Hier muss sich der Hauptteil Ihres Tests befinden.
- WMQTestEngine
- Der Parameter WMQTestEngine stellt der Testengine, die den Test durchführt, eine Kennung bereit.
Dies ermöglicht es Tests, mit der Testengine-Methode
returnResult(WMQTestResult[], WMQTest)
während der Ausführung Ergebnisse zurückzugeben.Der erste Parameter dieser Methode (
WMQTestResult[]
) enthält die zurückzugebenden Ergebnisse. Der zweite Parameter (WMQTest
) muss 'this
' lauten, damit die Testengine weiß, woher die Ergebnisse stammen. Die Verwendung des Parameters WMQTestEngine für die Rückgabe von Zwischenergebnissen ist optional. Alternativ können Testergebnisse auch bei Testbeendigung zurückgegeben werden (siehe Tests beenden). - IProgressMonitor
- Der Parameter IProgressMonitor stellt dem Rückmeldungsprogramm der grafischen Benutzerschnittstelle, das für die aktuelle Testausführung verwendet wird, eine Kennung bereit. Hierdurch kann Ihr Test sowohl textbasierte Rückmeldung zu den derzeit ausgeführten Aufgaben und Unteraufgaben geben, als auch eine Anzeige für den aktuellen Fortschritt darstellen.
Die Kennung für den Fortschrittsmonitor wird durch die Standardimplementierung von
runTest
zwischengespeichert. Falls diese verwendet wurde, kann daher auch durch Verwendung der MethodegetGUIMonitor()
auf eine Kennung für den Fortschrittsmonitor zugegriffen werden.Der Fortschrittsmonitor ist eine Kernressource von Eclipse. Weitere Informationen zu seiner Verwendung finden Sie im Internet in der Dokumentation der Anwendungsprogrammierschnittstelle für Eclipse.
- contextObjects
- Der Parameter contextObjects stellt eine MQExtObject-Feldgruppe bereit. Der Parameter liefert den Kontext des auszuführenden Tests, sodass die entsprechenden Kontrollkästchen bereits vorausgewählt sind, wenn der Benutzer den Dialog 'Tests ausführen' öffnet.
- treeNode
- Der Parameter treeNode erfasst, welcher Ordner oder welches Objekt in der Navigatoransicht angeklickt wurden, um die Standardtests auszuführen oder den Dialog 'Tests ausführen' zu öffnen.
Benutzereinstellungen
Tests müssen entsprechend der Einstellungen durchgeführt werden, die im zugehörigen Eclipse-Dialog angegeben werden. Mit den folgenden Methoden greifen Sie auf die Einstellungen zu:
PreferenceStoreManager.getIncludeHiddenQmgrsPreference()
gibttrue
zurück, falls Sie Warteschlangenmanager einschließen, die während des Tests in IBM MQ Explorer ausgeblendet wurden, oderfalse
, falls sie ausgeschlossen werden müssen.PreferenceStoreManager.getIncludeSysObjsPreference()
gibttrue
zurück, falls Systemobjekte (Objekte mit Namen, die mit 'SYSTEM' beginnen) in den Test eingebunden werden müssen, oderfalse
, falls sie ausgeschlossen werden müssen.
Beenden von Tests
Beenden Sie einen Test durch Aufruf von testComplete(WMQTestResult[])
bei gleichzeitiger Übergabe einer Feldgruppe mit Testergebnisobjekten. Weitere Informationen zu Testergebnisobjekten finden Sie unter Testergebnisse erstellen.
Beim Abschluss können Sie Testergebnisse mit dieser Methode zurückgeben, und zwar als Alternative oder zusätzlich zur Rückgabe von Testergebnissen während der Testausführung (wie beschrieben unter Tests ausführen). Jedoch werden Ergebnisse, die doppelt zurückgegeben werden, auch doppelt angezeigt.
Auch wenn Ihr Test die WMQTestEngine
-Methode returnResult
zur Rückgabe aller Ergebnisse verwendet, muss er dennoch beim Abschluss testComplete
aufrufen. Dies ist erforderlich, um die Testverarbeitung abzuschließen. Falls keine neuen Ergebnisse zurückgegeben werden müssen, können Sie eine leere Feldgruppe mit WMQTestResult
-Objekten in der Methode testComplete
angeben.
Weitere Informationen finden Sie in Teststruktur.
Testergebnisse erstellen
Testergebnisse werden als WMQTestResult
-Objekte implementiert.
Erstellen Sie Ergebnisse mit:
WMQTestResult(int severity, String description, String qmgrname, String objectType)
Dabei gilt:
severity
ist eine Ganzzahl, die den Schweregrad des Problems angibt. Verwenden Sie einen der folgenden Schweregrade:IMarker.SEVERITY_ERROR
,IMarker.SEVERITY_WARNING
oderIMarker.SEVERITY_INFO
description
ist die Zeichenfolge, mit der das beim Test aufgetretene Problem beschrieben wird und die in der Problemanzeige angezeigt wird.qmgrname
ist der Name des Warteschlangenmanagers, in dem das Problem aufgetreten ist.objectType
ist eine Zeichenfolge, die die Objektklasse angibt, in der das Problem gefunden werden kann, beispielsweise "Warteschlangenmanager" oder "Kanäle".
Weitere Informationen zur Verwendung des Testergebnisobjekts nach dessen Erstellung finden Sie unter Beenden von Tests.
Vorgehen bei Abbrüchen
Sie können Tests während ihrer Ausführung abbrechen. Verwenden Sie die Methode isCancelled()
zur Überprüfung, ob ein Test anhalten muss.
Ein Test sollte regelmäßig prüfen, ob er abgebrochen wurde, um den Benutzer nicht unnötig warten zu lassen.
Falls Sie versuchen, einen Test abzubrechen, dieser jedoch für einen längeren Zeitraum nicht reagiert, erzwingt die Testengine den Testabbruch, indem sie den ausführenden Thread beendet. Stützen Sie sich nicht zu sehr auf diese Methode, da es vorzuziehen ist, dass der Test rechtzeitig reagiert, um verwendete Ressourcen freizugeben und mögliche Testergebnisse zurückzugeben, die bis zu diesem Zeitpunkt erstellt wurden.
Testdokumentation
Sie können zusätzliche Dokumentation bereitstellen, um Testergebnisse zu erläutern und Empfehlungen zur Lösung von Problemen zu geben.
Erstellen Sie Dokumentation in HTML und geben Sie ihre Position in der Datei 'plugin.xml' für das Plug-in an, das den Test enthält. Weitere Informationen zur Definition von Tests in HTML finden Sie unter Neue Tests erstellen.
Dies sind mögliche Positionen der Dokumentations-HTML-Datei:
- Intern - Speicherung im Plug-in-Projekt selbst, das den Test enthält. Die Position muss in der XML-Datei relativ zur Datei 'plugin.xml' selbst angegeben werden. Beispiel: doc/TestDoc.html
- Extern - Speicherung auf einem Web-Server, wodurch die Pflege der Dokumentation unabhängig vom Test selbst erfolgen kann. Die Position muss als vollständige URL angegeben werden, beginnend mit 'http://'.