Интерфейс 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
, поэтому если это используется, управляющий элемент Монитора процессов также доступен с помощью метода WMQTestgetGUIMonitor()
.Монитор выполнения является основным ресурсом 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://'.