Интерфейс WMQTest

Тесты, написанные для IBM® MQ Explorer, должны принадлежать классу Java™, расширяющему предоставленный класс WMQTest. В этом разделе описывается интерфейс и операции предоставленных методов.

Атрибуты теста

Определение теста указывается в файле манифеста модуля (plugin.xml) с помощью различных атрибутов. Атрибуты для теста перечислены в следующей таблице.

Атрибут Описание
ИД Строка, предоставляющая уникальный идентификатор для теста.
name Название теста.
class Имя класса Java, содержащего исходный код теста.
testset Строка, задающая группу для отображения теста; например, wmq, показывающую тест в категории Тесты администратора очередей.
testsubset Строка, задающая подгруппу для отображения теста; например, queues, показывающую тест в категории Очереди.
description Краткое описание, описывающее действие теста.
furtherinfo Расположение документа HTML или XHTML, содержащего дополнительную информацию о тесте. Этот документ показывается в IBM MQ Explorer при двойном щелчке на окне диалога Выполнить тест или результатах теста в представлении Результаты теста.

Указать значения этих атрибутов можно в файле plugin.xml. Эти атрибуты также доступны программно с помощью методов WMQTest, перечисленных в следующей таблице.

Метод Описание
getTestID() Возвращает ИД теста.
getTestName() Возвращает имя теста.
getDescription() Возвращает описание теста.
getTestSet() Возвращает управляющий элемент объекта набора тестов, созданный как родительский для теста.
getFurtherInfoPath() Возвращает расположение документа XHTML или HTML, содержащего дополнительную информацию о тесте.

Создание теста

Служба IBM MQ Explorer Tests заполняет объекты теста с помощью предоставляемого конструктора WMQTest(). Создавать подклассы для этого конструктора не требуется.

Структура теста

Метод WMQTest runTest задает тело теста и вызывается для запуска теста.

Завершение метода runTest не означает окончание теста, следует явно указать конец теста с помощью метода testComplete. Можно реализовать тесты чтобы они получали данные объекта асинхронно.

Метод runTest отправляет запрос для получения данных об объектах и выполнениях тестов у метода получателя запросов, получающего ответ. Это позволяет протестировать данные без необходимости реализовывать ожидание нитей, это продемонстрировано в Примере 3.

Если в ходе теста требуется ручное ожидание, можно использовать монитор объекта для объекта теста для применения методов Java wait и notify. Нити в службе тестов реализованы без применения мониторов объектов отдельных объектов тестирования.

Выполнение теста

Служба IBM MQ Explorer Tests вызывает runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) для запуска теста. Основное тело теста должно быть здесь.

WMQTestEngine
Параметр WMQTestEngine предоставляет управляющий элемент службы тестов, выполняющей тест.

Это необходимо чтобы тесты могли вернуть результаты во время выполнения тестов с помощью метода returnResult(WMQTestResult[], WMQTest)службы.

Первый параметр этого метода (WMQTestResult[]) содержит возвращаемые результаты, второй параметр (WMQTest) должен быть 'this', чтобы служба тестов знала откуда поступают результаты. Применение параметра WMQTestEngine для возврата промежуточных результатов является необязательным, можно также возвращать результаты тестов после выполнения тестирования (см. Выполнение теста).

IProgressMonitor
Параметр IProgressMonitor предоставляет управляющий элемент для монитора обратной связи GUI, используемого для текущего выполнения теста. Это позволяет вашим тестам предоставлять текстовую обратную связь по выполняемым задачам и подзадачам, а также индикатор состояния для полного выполнения.

Управляющий элемент Монитор выполнения по умолчанию кэшируется реализацией runTest, поэтому если это используется, управляющий элемент Монитора процессов также доступен с помощью метода WMQTest getGUIMonitor().

Монитор выполнения является основным ресурсом Eclipse. См. Документацию Eclipse API в web для получения дополнительной информации о его применении.

contextObjects
Параметр contextObjects предоставляет массив MQExtObject. Этот параметр предоставляет контекст теста для выполнения, поэтому соответствующие переключателя уже включены когда пользователь открывает окно Выполнить тест.
treeNode
Параметр treeNode записывает щелчки по папкам и объектам на панели Навигатор для запуска тестов по у молчанию или чтобы открыть окно Выполнить тест.

Параметры для пользователя

Тесты должны соответствовать пользовательским параметрам, приведенным в окне Параметры Eclipse. С помощью следующих методов можно просмотреть параметры:

  • PreferenceStoreManager.getIncludeHiddenQmgrsPreference(), возвращающий true если вы добавили в тест администраторы очередей, скрытые в IBM MQ Explorer, или false если нужно исключить их.
  • PreferenceStoreManager.getIncludeSysObjsPreference(), возвращающее true если системные объекты (объекты, имена которых начинаются с SYSTEM.) должны быть добавлены в тест или false если нужно их исключить.

Выполнение теста

Выполните тест, вызвав testComplete(WMQTestResult[]) и передав его в массив объектов результатов тестов. Руководство по объектам результатов тестов приведено в Создание результата теста.

Можно вернуть результаты по завершению тестирования с помощью данного метода в дополнение к или вместо возврата результатов тестирования во время выполнения теста (как описано в разделе Выполнение теста). Однако, результаты, возвращенные дважды, отображаются дважды.

Даже если тест использует метод WMQTestEngine returnResult для возврата результатов он все равно должен вызывать testComplete после завершения. Это обязательно для выполнения обработки тестов. Можно задать пустой массив объектов WMQTestResult в методе testComplete если результатов для возврата нет.

Дополнительная информация приведена в разделе Структура теста.

Создание результата теста

Результаты тестов реализуются как объекты WMQTestResult. Создать результаты можно с помощью:

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

где:

  • severity - целое число, обозначающее серьезность неполадки. Используйте только следующие уровни серьезности: IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING или IMarker.SEVERITY_INFO
  • description - это строка описания, поясняющая найденную тестом неполадку, отображается на панели Неполадки.
  • qmgrname - имя администратора очередей, в котором найдена неполадка.
  • objectType - строка, задающая класс объектов, в котором может быть найдена неполадка, например "Очереди" или "Каналы".

Дополнительная информация о том, что делать с объектом результата теста после его создания приведена в разделе Выполнение теста.

Обработка отмен

Во время выполнения можно отменить работу теста. Для этого используйте метод isCancelled().

Хороший тест должен регулярно проверять, не был ли он отменен, чтобы не заставлять пользователя необоснованно ждать.

Если вы пытаетесь отменить тест, а он не отвечает продолжительное время, служба теста принуждает тест завершить работу, закрыв нить, выполняющую тест. Не стоит полагаться на этот метод, желательно чтобы тест реагировал во время, позволяя очистить используемые им ресурсы и вернуть результаты тестирования, полученные к данному моменту.

Документация теста

Можно задать дополнительную документацию для объяснения результатов тестов и предоставления руководства по устранению найденных неполадок.

Предоставьте документацию в HTML, указав расположение в файле plugin.xml для модуля, предоставляющего тест. Дополнительная информация о создании тестов XML приведена в разделе Создание нового теста.

Расположением файла HTML с документацией может быть:

  • internal - хранится в проекте модуля, предоставленном самим тестом. Расположение следует задать в XML относительно самого файла plugin.xml. Например, doc/TestDoc.html
  • external - хранится на web-сервере, позволяя выполнять обслуживание документации отдельно от самого теста. Расположение следует задать как полный URL, начиная с 'http://'.