Rozhraní WMQTest

Testy napsané pro produkt IBM® MQ Explorer musejí 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.
název Smysluplný název testu.
class Název třídy Java , jež obsahuje zdrojový kód testu.
testset Řetězec, který definuje skupinu, kde bude test zobrazen; například wmq znázorňující test v kategoriiTesty správce front.
testsubset Řetězec, který definuje podskupinu, kde bude test zobrazen; například fronty znázorňující test v kategorii Fronty.
popis 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 zobrazuje v produktu IBM MQ Explorer, pokud dvakrát klepnete na test v dialogovém okně Spustit testy nebo na výsledek testu v pohledu Výsledky testu.

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

Stroj testů v produktu IBM MQ Explorer konkretizuje testovací objekt pomocí dodaného konstruktoru WMQTest(). 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ěď. Test tak může čekat na data bez nutnosti implementace čekání podprocesu; viz Ukázka 3.

Je-li potřeba použít ruční čekání (prodlevu) v rámci 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

Stroj testů produktu IBM MQ Explorer spustí test voláním runTest(WMQTestEngine, IProgressMonitor, contextObjects, treeNode). 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é budou vráceny, a druhý parametr WMQTest) musí být 'tento', aby stroj testů poznal, odkud výsledky pocházejí. Použití parametru WMQTestEngine k vrácení průběžných výsledků je volitelné, jinak mohou být výsledky testů vráceny při dokončení testu (viz část 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ší doporučení pro použití naleznete v dokumentaci k rozhraní API platformy Eclipse 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:

  • PreferenceStoreManager.getIncludeHiddenQmgrsPreference() - vrátí hodnotu true, pokud jste zahrnuli správce front, kteří byli v testu skryti v produktu IBM MQ Explorer, nebo hodnotu false, pokud tyto testy musí být vyloučeny.
  • PreferenceStoreManager.getIncludeSysObjsPreference() – vrátí hodnotu true, pokud musí být systémové objekty (objekty s názvy začínajícími řetězcem 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ů. Další informace o objektech s výsledky testů naleznete v části Vytvoření výsledku testu.

Vrácení výsledků při dokončení pomocí této metody je dodatečnou akcí nebo alternativou k vrácení výsledků testů během spuštění testu (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 viz 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".

Informace o dalším postupu s objektem výsledku testu po jeho vytvoření naleznete v části 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 viz 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://'.