La interfaz WMQTest

Las pruebas escritas para IBM® MQ Explorer deben pertenecer a una clase Java™ que amplíe la clase WMQTest proporcionada. En este tema se explica la interfaz y el funcionamiento de los métodos proporcionados.

Atributos de la prueba

Defina una prueba en el archivo de manifiesto de plug-in (plugin.xml) utilizando un conjunto de atributos. En la tabla siguiente se listan los atributos para una prueba.

Atributo Descripción
id Una serie que proporciona un identificador exclusivo para la prueba.
name Un nombre significativo para la prueba.
class El nombre de la clase Java que contiene el código fuente de la prueba.
testset Una serie que define el grupo en el que visualizar la prueba; por ejemplo, wmq, que visualiza la prueba en la categoría Pruebas del gestor de colas.
testsubset Una serie que define el subgrupo en el que visualizar la prueba; por ejemplo, colas, que visualiza la prueba en la categoría Colas.
description Una descripción breve que describe lo que hace la prueba.
furtherinfo La ubicación de un documento HTML o XHTML que contiene más información sobre la prueba. Este documento se visualiza en IBM MQ Explorer cuando se efectúa una doble pulsación en la prueba del diálogo Ejecutar pruebas o en un resultado de una prueba en la vista Resultados de la prueba.

Especifique los valores de estos atributos en el archivo plugin.xml para definir la prueba. También se puede acceder a estos atributos mediante programación, utilizando los métodos de WMQTest que se listan en la tabla siguiente.

Método Descripción
getTestID() Devuelve el ID de prueba.
getTestName() Devuelve el nombre de la prueba.
getDescription() Devuelve la descripción de la prueba.
getTestSet() Devuelve un manejador para el objeto de conjunto de pruebas que se ha creado para ser padre de la prueba.
getFurtherInfoPath() Devuelve la ubicación del documento XHTML o HTML que contiene más información sobre la prueba.

Crear la prueba

El motor de Pruebas de IBM MQ Explorer crea una instancia del objeto utilizando el constructor proporcionado WMQTest(). No hace falta crear una subclase de este constructor.

Estructura de la prueba

El método WMQTest runTest define el cuerpo de la prueba y se invoca para iniciar la ejecución de una prueba.

El final del método runTest no implica el final de la prueba; debe especificar explícitamente el final de la prueba utilizando el método testComplete. Puede implementar pruebas para que obtengan los datos de objetos de forma asíncrona.

El método runTest somete una petición para obtener datos sobre objetos y la prueba se ejecuta desde el método de escucha que recibe la respuesta. Esto permite a la prueba esperar los datos sin que sea necesario implementar la espera de hebras; esto se demuestra en el Ejemplo 3.

Si se necesita una espera manual (sleep) en una prueba, se puede utilizar el supervisor de objetos para que el objeto de prueba utilice los métodos Java wait y notify. El proceso de hebras del motor de pruebas se implementa sin utilizar los supervisores de objetos de objetos de prueba individuales.

Ejecutar la prueba

El motor de Pruebas de IBM MQ Explorer llama a runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) para iniciar la ejecución de la prueba. El cuerpo principal de la prueba debe estar aquí.

WMQTestEngine
El parámetro WMQTestEngine proporciona un manejador al motor de pruebas que está ejecutando la prueba.

Este parámetro se proporciona para permitir a las pruebas devolver resultados mientras se está realizando una prueba utilizando el método returnResult(WMQTestResult[], WMQTest) del motor de pruebas.

El primer parámetro de este método (WMQTestResult[]) contiene los resultados que se han de devolver, y el segundo parámetro (WMQTest) debe ser 'this', para que el motor de pruebas sepa de dónde proceden los resultados. El uso del parámetro WMQTestEngine para devolver resultados provisionales es opcional, de forma alternativa, los resultados de prueba se pueden devolver al finalizar la prueba (consulte Completar la prueba).

IProgressMonitor
El parámetro IProgressMonitor proporciona un manejador para el supervisor de información de la GUI que se utiliza para la prueba actual. Esto permite a la prueba proporcionar información textual sobre la tarea y subtareas que están actualmente en ejecución, así como una barra de progreso para el proceso de conclusión actual.

El manejador para el Supervisor de progreso lo almacena en memoria caché la implementación predeterminada de runTest, de modo que si ésta se ha utilizado, también se puede acceder a un manejador para el Supervisor de progreso utilizando el método de WMQTest getGUIMonitor().

El Supervisor de progreso es un recurso base de Eclipse. Consulte la Documentación de las API de Eclipse en la web para obtener más información sobre cómo utilizarlo.

contextObjects
El parámetro contextObjects proporciona una matriz MQExtObject. El parámetro proporciona el contexto de la prueba que se va a ejecutar para que los recuadros de selección aplicables estén preseleccionados cuando el usuario abra el diálogo Ejecutar pruebas.
treeNode
El parámetro treeNode registra qué carpeta u objeto de la vista de Navegador se ha seleccionado para ejecutar las pruebas predeterminadas o para abrir el diálogo Ejecutar pruebas.

Preferencias de usuario

Las pruebas deben ajustarse a las preferencias de usuario que se han proporcionado en el diálogo Preferencias de Eclipse. Utilice los métodos siguientes para acceder a las preferencias:

  • PreferenceStoreManager.getIncludeHiddenQmgrsPreference() que devuelve true si se incluyen en la prueba los gestores de colas que se han ocultado en la prueba IBM MQ Explorer o false si éstos deben excluirse.
  • PreferenceStoreManager.getIncludeSysObjsPreference() que devuelve true si deben incluirse objetos del sistema (objetos que tienen nombres que empiezan por SYSTEM.) en la prueba, o false si éstos deben excluirse.

Completar la prueba

Para completar una prueba, llame a testComplete(WMQTestResult[]) y pásele una matriz de objetos de resultados de la prueba. Consulte el apartado Crear un resultado de la prueba si desea ayuda sobre los objetos de resultados de prueba.

Puede devolver resultados al finalizar utilizando este método además de, o como alternativa a, devolver los resultados de prueba durante una ejecución de prueba (tal como se explica en Ejecución de la prueba). No obstante, los resultados que se devuelven dos veces se visualizan dos veces.

Aunque su prueba utilice el método de WMQTestEngine returnResult para devolver todos los resultados, debe llamar igualmente a testComplete cuando finalice. Esto es necesario para completar el proceso de la prueba. Puede proporcionar una matriz vacía de objetos WMQTestResult en el método testComplete si no hay resultados nuevos que devolver.

Para obtener más información, consulte Estructura de la prueba.

Crear un resultado de la prueba

Los resultados de la prueba se implementan como objetos WMQTestResult. Para crear resultados, utilice:

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

donde:

  • severity es un entero que identifica la gravedad del problema. Utilice uno de los siguientes niveles de gravedad: IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING o IMarker.SEVERITY_INFO
  • description es la serie que explica el problema detectado por la prueba, que se visualizará en la vista Problemas.
  • qmgrname es el nombre del gestor de colas en el que se ha encontrado el problema.
  • objectType es la serie que proporciona la clase de objeto en la que puede encontrarse el problema, por ejemplo, "Colas" o "Canales".

Si desea más información sobre qué hacer con el objeto del resultado de la prueba cuando se ha creado, consulte el apartado Completar la prueba.

Cómo manejar una cancelación

Puede cancelar la prueba mientras se está ejecutando. Utilice el método isCancelled() para comprobar si una prueba debe detenerse.

Una buena prueba debe comprobar regularmente si ha sido cancelada o no para evitar entretener innecesariamente a un usuario.

Si intenta cancelar una prueba pero la prueba no responde durante un largo periodo de tiempo, el motor de pruebas fuerza la detención de la prueba, finalizando la hebra que está ejecutando la prueba. No confíe en este método, es preferible que una prueba responda a tiempo, lo que permite a la prueba limpiar todos los recursos que ha utilizado y devolver todos los resultados que se han generado hasta el momento.

Documentación de la prueba

Puede proporcionar documentación adicional para explicar los resultados devueltos por las pruebas y ofrecer ayuda sobre las acciones que se han de realizar para resolver el problema.

Proporcione la documentación en HTML, e identifique la ubicación en el archivo plugin.xml del plug-in que proporciona la prueba. Para ver detalles de la definición de pruebas en XML, consulte el apartado Crear una nueva prueba.

La ubicación del archivo HTML de documentación puede ser:

  • interna - Se almacena en el proyecto de plug-in que proporciona la prueba. La ubicación debe definirse en el XML en relación al archivo plugin.xml. Por ejemplo, doc/TestDoc.html
  • externa - Se almacena en un servidor web, lo que permite el mantenimiento de la documentación por separado de la prueba. La ubicación debe definirse como un URL completo que comience con 'http://'.