Rozhraní WMQTest

Testy napsané pro IBM® MQ Explorer musí patřit do třídy Java , která rozšiřuje poskytnutou třídu WMQTest. Toto téma objasňuje rozhraní a činnost poskytnutých metod.

Atributy testu

Test definujete v souboru typu manifest modulu plug-in (plugin.xml) pomocí kolekce atributů. Atributy testu jsou uvedeny v následující tabulce.

Atribut Popis
ID Řetězec, který udává jedinečný identifikátor testu.
name Smysluplný název testu.
class Název třídy Java, která obsahuje zdrojový kód testu.
testset Řetězec, který definuje skupinu, ve které se má zobrazit test; například,wmq, který zobrazuje test v kategorii Testy správce front .
testsubset Řetězec, který definuje podskupinu, v níž se má zobrazit test; například,queues, který zobrazuje test v kategorii Fronty .
description Krátký popis obsahu činnosti testu.
furtherinfo Umístění dokumentu ve formátu HTML nebo XHTML, který obsahuje další informace o testu. Tento dokument se zobrazí v produktu IBM MQ Explorer , když dvakrát klepnete na test v dialogovém okně Spustit testy nebo na výsledek testu v pohledu Výsledky testů.

Zadáním hodnot těchto atributů do souboru plugin.xml definujete daný test. K těmto atributům lze také přistupovat programově pomocí metod WMQTest uvedených v následující tabulce.

Metoda Popis
getTestID() Vrátí ID testu.
getTestName() Vrátí název testu.
getDescription() Vrátí popis testu.
getTestSet() Vrátí manipulátor objektu sady testů vytvořený jako nadřízený prvek testu.
getFurtherInfoPath() Vrátí umístění dokumentu ve formátu XHTML nebo HTML, který obsahuje další informace o testu.

Vytvoření testu

Testovací stroj produktu IBM MQ Explorer vytvoří instance testovacího objektu pomocí poskytovaného WMQTest() konstruktoru. Není třeba vytvářet podtřídu tohoto konstruktoru.

Struktura testu

Funkce runTest metody WMQTest definuje hlavní část testu a je volána za účelem spuštění testu.

Ukončení metody runTest neznamená konec testu; ten je třeba výslovně zadat pomocí metody testComplete. Testy můžete implementovat tak, že budou získávat data objektů asynchronně.

Metoda runTest odešle požadavek na získání dat o objektech a test je spuštěn z metody modulu listener, která přijme odpověď. To umožňuje testu čekat na data, aniž byste museli implementovat čekající podproces; to je předvedeno v Ukázka 3.

Je-li třeba použít ruční čekání (prodlevu) jako součást testu, můžete pomocí monitoru objektů v testovacím objektu použít metody jazyka Java wait a notify. Podprocesy testovacího stroje jsou implementovány bez použití monitorů objektů u jednotlivých testovacích objektů.

Spuštění testu

Testovací stroj produktu IBM MQ Explorer zavolá runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) ke spuštění testovacího běhu. Zde musí být hlavní část testu.

WMQTestEngine
Parametr WMQTestEngine poskytuje manipulátor stroji testu, který spouští daný test.

Je poskytován za účelem vrácení výsledků testu v jejich průběhu pomocí metody stroje testů returnResult(WMQTestResult[], WMQTest).

První parametr této metody (WMQTestResult[]) obsahuje výsledky, které mají být vráceny, a druhý parametr (WMQTest) musí být 'this', aby testovací stroj věděl, odkud výsledky pocházejí. Použití parametru WMQTestEngine k vrácení prozatímních výsledků je volitelné - výsledky testu lze případně vrátit při dokončení testu (viz téma Dokončení testu).

IProgressMonitor
Parametr IProgressMonitor poskytuje manipulátor monitoru zpětné vazby GUI používaného v aktuálně spuštěném testu. To umožňuje testu poskytnutí textové zpětné vazby na aktuálně spuštěnou úlohu a dílčí úlohy a indikátoru průběhu aktuálně dokončovaného testu.

Ve výchozí implementaci metody runTest je manipulátor monitoru průběhu ukládán do mezipaměti, takže je v případě použití parametru umožněn přístup manipulátoru monitoru průběhu pomocí metody WMQTest getGUIMonitor().

Monitor průběhu je základním prostředkem platformy Eclipse. Další rady k použití této příručky naleznete na webu Eclipse API documentation na webu.

contextObjects
Parametr contextObjects poskytuje pole MQExtObject. Tento parametr dodává kontext testu, který má být spuštěn, aby byla předem zaškrtnuta příslušná políčka při otevření dialogového okna Spustit testy uživatelem.
treeNode
Parametr treeNode zaznamenává, která složka nebo objekt v pohledu Navigátor byla klepnutím vybrána ke spuštění výchozích testů nebo k otevření dialogového okna Spustit testy.

Předvolby uživatele

Testy musí odpovídat uživatelským předvolbám poskytnutým pomocí dialogového okna Předvolby platformy Eclipse. Pro přístup k předvolbám použijte jednu z následujících metod:

  • Metoda PreferenceStoreManager.getIncludeHiddenQmgrsPreference(), která vrací true, pokud zahrnete správce front, které byly skryty v IBM MQ Explorer v testu, nebo false, pokud musí být vyloučeni.
  • Metoda PreferenceStoreManager.getIncludeSysObjsPreference(), která vrací true, pokud musí být do testu zahrnuty systémové objekty (objekty s názvy začínajícími na SYSTEM), zahrnuty v testu, nebo hodnotu false, pokud musí být vyloučeny.

Dokončení testu

Test je dokončen voláním příkazu testComplete(WMQTestResult[]), kterému je předáno pole objektů s výsledky testů. Pokyny k objektům výsledku testu viz téma Vytvoření výsledku testu .

Výsledky můžete vrátit k dokončení pomocí této metody spolu s nebo jako alternativu k vrácení výsledků testu během testovacího běhu (jak je vysvětleno v části Spuštění testu). Všechny výsledky vrácené dvakrát jsou také dvakrát zobrazeny.

I když používá daný test funkci returnResult metody WMQTestEngine k vrácení všech příslušných výsledků, musí při dokončení volat metodu testComplete. Je to nutný krok k dokončení zpracování testů. V metodě testComplete lze zadat prázdné pole objektů WMQTestResult, pokud nelze vrátit žádné výsledky.

Další informace najdete v tématu Struktura testu.

Vytvoření výsledku testu

Výsledky testu jsou implementovány jako objekty WMQTestResult. Výsledky lze vytvořit pomocí příkazu:

WMQTestResult(int severity, String description, String qmgrname, String objectType)

kde:

  • severity je celé číslo identifikující závažnost problému. Použijte jednu z následujících úrovní závažnosti: IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING nebo IMarker.SEVERITY_INFO.
  • description je řetězec objasňující problém nalezený testem, který se zobrazí v pohledu Problémy.
  • qmgrname je název správce front, ve kterém byl nalezen problém.
  • objectType je řetězec udávající třídu objektu, kde se problém vyskytuje, například "Fronty" nebo "Kanály".

Další informace o tom, co se má provést s objektem výsledku testu po jeho vytvoření, najdete v tématu Dokončení testu.

Zrušení

Spuštěný test lze během jeho činnosti zrušit. Chcete-li ověřit, zda musí být test zastaven, použijte metodu isCancelled().

Dobrý test pravidelně zjišťuje, zda nebyl zrušen, a zabraňuje tak zbytečnému zdržování uživatele.

Pokud se pokusíte zrušit test, ale test nebude delší dobu odpovídat, vynutí testovací jádro zastavení testu ukončením podprocesu, který test spustil. Není však vhodné spoléhat na tuto možnost. Je lepší, když test odpoví včas a umožní vyčištění použitých prostředků a vrácení veškerých dosud vygenerovaných výsledků.

Dokumentace k testům

Testy lze poskytovat s dodatečnou dokumentací, která vysvětluje navrácené výsledky a dává doporučení k vyřešení problému.

Dokumentaci dodávejte ve formátu HTML s určením jejího umístění v souboru plugin.xml, který přísluší k modulu plug-in s testem. Podrobnosti o definování testů v XML naleznete v tématu Vytvoření nového testu.

Možná umístění souboru HTML s dokumentací:

  • Interní - uloženo v projektu modulu plug-in, který poskytuje samotný test. Umístění musí být definováno ve formátu XML vzhledem k samotnému souboru plugin.xml. Příklad: doc/TestDoc.html
  • Externí - uloženo na webovém serveru, čímž je možná údržba dokumentace nezávisle na samotném testu. Umístění je třeba definovat jako úplnou adresu URL, začínající řetězcem 'http://'.