Interfejs WMQTest
Testy napisane dla programu IBM® MQ Explorer muszą należeć do klasy Java™ rozszerzającej udostępnioną klasę WMQTest. W rozdziale wyjaśnione jest działanie interfejsu oraz działanie udostępnianych metod.
- Atrybuty testu - atrybuty obiektu testowego
- Tworzenie testu - konstruktor obiektów testowych
- Struktura testu - początek oraz zakończenie testu
- Uruchamianie testu - główna treść testu
- Preferencje użytkownika - uzyskiwanie dostępu do preferencji
- Kończenie testu - oznaczenie testu jako zakończony
- Tworzenie wyniku testu - tworzenie wyników testu
- Działania w przypadku anulowania - okoliczności anulowania testu przez użytkownika
- Dokumentacja testu - więcej informacji o teście
Atrybuty testu
Testy są definiowane w pliku manifestu wtyczki (plugin.xml) przy użyciu kolekcji atrybutów. W poniższej tabeli znajduje się lista atrybutów testu.
Atrybut | Opis |
---|---|
identyfikator | Łańcuch zawierający unikalny identyfikator testu. |
nazwa | Znacząca nazwa testu. |
klasa | Nazwa klasy Java zawierającej kod źródłowy testu. |
zestaw_testów | Łańcuch zawierający definicję grupy, w której test ma zostać wyświetlony. Na przykład wmq, co powoduje wyświetlenie testu w kategorii Testy menedżera kolejek. |
podzbiór_testów | Łańcuch zawierający definicję podgrupy, w której test ma zostać wyświetlony; na przykład kolejki, co powoduje wyświetlenie testu w kategorii Kolejki. |
opis | Krótki opis działań wykonywanych podczas testu. |
informacje_dodatkowe | Miejsce dokumentu HTML lub XHTML zawierającego dodatkowe informacje o teście. Dokument ten jest wyświetlany w programie IBM MQ Explorer po dwukrotnym kliknięciu testu w oknie dialogowym Uruchamianie testów lub po dwukrotnym kliknięciu wyniku testu w widoku Wyniki testu. |
Test jest definiowany na podstawie wartości tych atrybutów określonych w pliku plugin.xml. Dostęp do tych atrybutów można także uzyskać programowo za pomocą metod interfejsu WMQTest znajdujących się w poniższej tabeli.
Metoda | Opis |
---|---|
getTestID() |
Zwraca identyfikator testu. |
getTestName() |
Zwraca nazwę testu. |
getDescription() |
Zwraca opis testu. |
getTestSet() |
Zwraca uchwyt do obiektu zestawu testów utworzonego jako nadrzędny względem testu. |
getFurtherInfoPath() |
Zwraca miejsce dokumentu HTML lub XHTML zawierającego dodatkowe informacje o teście. |
Tworzenie testu
Mechanizm testów
programu IBM MQ Explorer tworzy
instancje obiektu testowego za pomocą udostępnionego konstruktora
WMQTest()
. Nie ma potrzeby tworzenia podklas tego konstruktora.
Struktura testu
W metodzie runTest
interfejsu WMQTest
definiowana jest treść komunikatu, a metoda ta jest wywoływana w celu uruchomienia testu.
Zakończenie wykonywania metody runTest
nie oznacza zakończenia testu; zakończenie testu należy odrębnie określić za pomocą metody testComplete
. Testy można implementować w taki sposób, aby dane obiektu pobierały asynchronicznie.
Za pomocą metody runTest
wprowadzane jest żądanie pobrania danych dotyczących obiektu, a następnie odebranie odpowiedzi w metodzie nasłuchiwania powoduje uruchomienie testu. Umożliwia oczekiwanie przez test na odbiór danych bez potrzeby implementowania oczekiwania przez wątek; sytuacja ta została przedstawiona w Przykładzie 3.
Jeśli
w teście wymagane jest ręczne wprowadzenie okresu oczekiwania (funkcja sleep),
to można za pośrednictwem monitora obiektu testowego użyć metod Java
wait
i notify
. Wątki są w mechanizmie testów zaimplementowane bez użycia monitorów poszczególnych obiektów testowych.
Uruchamianie testu
Mechanizm testów
programu IBM MQ Explorer uruchamia
test, wywołując metodę runTest(WMQTestEngine,
IProgressMonitor,contextObjects, treeNode)
. W tym miejscu musi znajdować się główna treść testu.
- WMQTestEngine
- W parametrze WMQTestEngine udostępniany jest uchwyt do mechanizmu testów uruchamiającego test.
Za pomocą metody
returnResult(WMQTestResult[], WMQTest)
mechanizmu możliwe jest zwracanie wyników przez test w trakcie jego działania.Pierwszy parametr metody (
WMQTestResult[]
) zawiera wyniki, które mają zostać zwrócone, zaś drugi parametr (WMQTest
) musi być ustawiony na wartość 'this
', aby możliwe było określenie przez mechanizm testów, skąd otrzymano wyniki. Wyniki testu mogą być zwracane na bieżąco (w przypadku użycia parametru WMQTestEngine) lub po zakończenia testu (zapoznaj się z sekcją Kończenie testu). - IProgressMonitor
- W parametrze IProgressMonitor udostępniany jest uchwyt do monitora opcji GUI używanego w bieżącym teście. Umożliwia to udostępnianie w teście zarówno opcji tekstowej dotyczącej wykonywanych zadań i podzadań oraz wyświetlanie paska postępu informującego o stopniu ukończenia testu.
Uchwyt do Monitora stanu jest w domyślnej implementacji metody
runTest
przechowywany w pamięci podręcznej i jeśli metoda ta została użyta, dostęp do monitora stanu można również uzyskać za pomocą metodygetGUIMonitor()
interfejsu WMQTest.Monitor stanu jest podstawowym zasobem środowiska Eclipse. Zapoznaj się z dokumentacją interfejsu API Eclipse znajdującą się w serwisie WWW w celu uzyskania dalszych wskazówek.
- contextObjects
- Jako wartość parametru contextObjects udostępniana jest tablica MQExtObject. W parametrze udostępniany jest kontekst uruchamianego testu, co powoduje zaznaczenie odpowiednich pól wyboru w momencie otwarcia przez użytkownika okna dialogowego Uruchamianie testów.
- treeNode
- Za pomocą parametru treeNode wykonywany jest zapis informacji o tym, który folder lub obiekt kliknięto w widoku Nawigator w celu uruchomienia domyślnych testów lub otwarcia okna dialogowego Uruchom testy.
Preferencje użytkownika
Testy muszą być zgodne z preferencjami użytkownika określonymi w oknie dialogowym Preferencje Eclipse. Użyj następujących metod, aby uzyskać dostęp do preferencji:
PreferenceStoreManager.getIncludeHiddenQmgrsPreference()
, która zwraca wartośćtrue
, jeśli test obejmuje menedżery kolejek ukryte w programie IBM MQ Explorer, lub wartośćfalse
, jeśli te menedżery muszą zostać wykluczone.PreferenceStoreManager.getIncludeSysObjsPreference()
, która zwraca wartośćtrue
, jeśli obiekty systemowe (obiekty o nazwa rozpoczynających się od przedrostka SYSTEM.) muszą zostać uwzględnione w teście, lub wartośćfalse
, jeśli te obiekty mają zostać wykluczone z testu.
Kończenie testu
Zakończ test,
wywołując metodę
testComplete(WMQTestResult[])
z
przekazaniem do niej tablicy obiektów wyników testu. Więcej informacji o
obiektach wyników testów zawiera sekcja
Tworzenie wyniku testu.
Zwrócenie wyników na zakończenie testu za pomocą powyższej metody stanowi opcję dodatkową lub alternatywną do zwracania wyników testu podczas wykonywania testu (jak wyjaśniono w sekcji Uruchamianie testu). Jednakże w przypadku dwukrotnego zwrócenia wyników, są one dwukrotnie wyświetlane.
Nawet jeśli w teście wyniki zwracane są za pomocą metody
returnResult
mechanizmu
WMQTestEngine
, aby zwrócić wszystkie
wyniki, należy wywołać metodę
testComplete
podczas zakończenia testu. Wymagane jest zakończenie przetwarzania testu. Jeśli nie ma wyników do zwrócenia, za pomocą metody
testComplete
można zwrócić pustą tablicę
obiektów WMQTestResult
.
Więcej informacji na ten temat zawiera sekcja Struktura testu.
Tworzenie wyniku testu
Wyniki testu są implementowane jako obiekty WMQTestResult
.
Utwórz wyniki z użyciem następujących parametrów:
WMQTestResult(int ważność, String opis, String nazwa_menedżera_kolejek, String typ_obiektu)
gdzie:
severity
- liczba całkowita identyfikująca istotność problemu. Użyj jednego z następujących poziomów istotności:IMarker.SEVERITY_ERROR
,IMarker.SEVERITY_WARNING
lubIMarker.SEVERITY_INFO
description
- łańcuch zawierający wyjaśnienie problemu znalezionego podczas wykonywania testu; objaśnienie jest wyświetlane w widoku Problemy.qmgrname
- nazwa menedżera kolejek, w którym wystąpił problem.objectType
- łańcuch zawierający klasę obiektu, w której wystąpił problem, np. Queues lub Channels.
Więcej informacji na temat sposobu postępowania z utworzonym obiektem wyniku testu zawiera sekcja Kończenie testu.
Działania w przypadku anulowania
Test
można anulować podczas jego działania. Użyj metody
isCancelled()
, aby sprawdzić, czy
test musi się zatrzymać.
Poprawny test musi regularnie sprawdzać, czy nie został anulowany, aby uniknąć niepotrzebnego czekania przez użytkownika.
Jeśli po próbie anulowania testu przez dłuższy czas nie można uzyskać odpowiedzi, mechanizm testów wymusza zatrzymanie testu przez zakończenie wątku, w którym działa test. Nie należy nadużywać tej metody. Preferowane jest odczekanie na odpowiedź testu, co pozwoli testowi wyczyścić używane zasoby oraz zwrócić wszystkie wygenerowane do tej pory wyniki.
Dokumentacja testu
Użytkownik może udostępnić dodatkową dokumentację z wyjaśnieniem wyników zwracanych w testach oraz określeniem działań, które należy wykonać w celu rozwiązania problemu.
Dokumentacja powinna być udostępniona w formacie HTML, a w pliku plugin.xml powinno być podane położenie wtyczki udostępniającej test. Szczegółowe informacje na temat definiowania testów w formacie XML zawiera sekcja Tworzenie nowego testu.
Położenie pliku HTML z dokumentacją może być:
- Wewnętrzne – przechowywane w projekcie wtyczki udostępniającym test. Położenie powinno być podane w dokumencie XML względem pliku plugin.xml. Na przykład: doc/TestDoc.html.
- Zewnętrzne – przechowywane na serwerze WWW, co umożliwia oddzielenie pracy z dokumentacją od pracy z testem. Położenie musi być zdefiniowane jako kompletny adres URL rozpoczynający się przedrostkiem http://.