Schnittstelle 'WMQTest'

Für IBM® MQ Explorer geschriebene Tests müssen zu einer Java -Klasse gehören, die die bereitgestellte WMQTest-Klasse erweitert. In diesem Thema werden die Schnittstelle und die Operation der bereitgestellten Methoden erläutert.

Testattribute

Definieren Sie einen Test in der Plug-in-Manifestdatei (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.
Name 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. Beispiel:wmq, der den Test in der Kategorie Warteschlangenmanagertests anzeigt.
testsubset Eine Zeichenfolge, die die Untergruppe definiert, in der der Test angezeigt werden soll. Beispiel:queues, in dem 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 Dialogfenster "Tests ausführen" oder auf ein Testergebnis in der Ansicht "Testergebnisse" 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 aufgerufen, um die Testausführung zu starten.

Das Ende der Methode runTest impliziert nicht das Ende des Tests. Sie müssen das Ende des Tests explizit mit der Methode testComplete angeben. Sie können Tests so implementieren, dass sie Objektdaten asynchron abrufen.

Die Methode runTest übergibt eine Anforderung zum Abruf von Daten zu Objekten und der Test wird von der Empfangsmethode, die die Antwort empfängt, ausgeführt. Auf diese Weise kann der Test auf Daten warten, ohne dass Sie einen Thread implementieren müssen. Dies wird in Beispiel 3veranschaulicht.

Wenn ein manueller Wartestatus (Ruhestatus) als Teil eines Tests erforderlich ist, können Sie den Objektmonitor für das Testobjekt verwenden, um die Java-Methoden wait und notify zu verwenden. 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 die Testausführung zu starten. Hier muss sich der Hauptteil Ihres Tests befinden.

WMQTestEngine
Der Parameter WMQTestEngine stellt der Testengine, die den Test ausführt, eine Kennung bereit.

Durch die Bereitstellung dieser Kennung wird es Tests ermöglicht, während der Ausführung eines Tests mithilfe der Methode returnResult(WMQTestResult[], WMQTest) der Testengine Ergebnisse zurückzugeben.

Der erste Parameter dieser Methode (WMQTestResult[]) enthält die 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 bei Testbeendigung zurückgegeben werden (siehe Test beenden).

IProgressMonitor
Der Parameter IProgressMonitor stellt dem GUI-Rückmeldemonitor, der für den aktuellen Testlauf 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 von der Standardimplementierung von runTest zwischengespeichert. Wenn diese verwendet wurde, kann auch durch Verwendung der WMQTest-Methode getGUIMonitor() auf eine Kennung für den Fortschrittsmonitor zugegriffen werden.

Der Fortschrittsmonitor ist eine Kernressource von Eclipse. Weitere Hinweise zur Verwendung finden Sie in der Eclipse-API-Dokumentation im Web.

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 zeichnet auf, auf welchen Ordner oder welches Objekt in der Ansicht Navigator geklickt wurde, um die Standardtests auszuführen oder um das Dialogfeld '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() gibt true zurück, wenn Sie Warteschlangenmanager, die in IBM MQ Explorer ausgeblendet wurden, in den Test einschließen, oder false, wenn sie ausgeschlossen werden müssen.
  • PreferenceStoreManager.getIncludeSysObjsPreference() gibt true zurück, wenn Systemobjekte (Objekte, deren Namen mit SYSTEM beginnen) in den Test eingeschlossen werden müssen, oder false, wenn sie ausgeschlossen werden müssen.

Beenden von Tests

Beenden Sie einen Test, indem Sie testComplete(WMQTestResult[]) aufrufen und eine Feldgruppe mit Testergebnisobjekten übergeben. Anleitungen zu Testergebnisobjekten finden Sie unter Testergebnis erstellen .

Sie können Ergebnisse nach Abschluss zurückgeben, indem Sie diese Methode zusätzlich oder als Alternative zur Rückgabe von Testergebnissen während eines Testlaufs verwenden (siehe Test 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. Sie können eine leere Feldgruppe mit WMQTestResult-Objekten in der Methode testComplete angeben, wenn keine neuen Ergebnisse zurückgegeben werden sollen.

Weitere Informationen finden Sie unter 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 oder IMarker.SEVERITY_INFO
  • description ist die Zeichenfolge, die das vom Test gefundene Problem erläutert und in der Ansicht 'Probleme' angezeigt wird.
  • qmgrname ist der Name des Warteschlangenmanagers, auf dem das Problem gefunden wurde.
  • objectType ist eine Zeichenfolge, die die Objektklasse angibt, in der das Problem gefunden werden kann, beispielsweise "Warteschlangenmanager" oder "Kanäle".

Weitere Informationen dazu, was mit dem Testergebnisobjekt nach seiner Erstellung geschehen soll, finden Sie unter Test abschließen.

Vorgehen bei Abbrüchen

Sie können Tests während ihrer Ausführung abbrechen. Verwenden Sie die Methode isCancelled(), um zu prüfen, ob ein Test gestoppt werden 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. Details zum Definieren von Tests in XML finden Sie unter Neuen Test 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://'.