Interface WMQTest

Os testes gravados para o IBM® MQ Explorer devem pertencer a uma classe do Java™ que estende a classe WMQTest fornecida. Este tópico explica a interface e a operação dos métodos fornecidos.

Atributos do Teste

Defina um teste no arquivo de manifesto de plug-ins (plugin.xml) usando uma coleção de atributos. Os atributos de um teste são listados na tabela a seguir.

Atributo Descrição
id Uma cadeia que fornece um identificador exclusivo para o teste.
name Um nome significativo para o teste.
class O nome da classe Java que contém o código-fonte do teste.
testset Uma cadeia que define o grupo no qual exibir o teste, por exemplo, wmq, que exibe o teste na categoria Testes do gerenciador de filas.
testsubset Uma cadeia que define o subgrupo no qual exibir o teste, por exemplo, queues, que exibe o teste na categoria Filas.
description Uma descrição resumida que descreve o que o teste faz.
furtherinfo O local de um documento HTML ou XHTML que contém mais informações sobre o teste. Este documento é exibido no IBM MQ Explorer quando você clica duas vezes no teste no diálogo Executar Testes ou em um resultado de teste na visualização Resultados de Testes.

Os valores desses atributos são especificados no arquivo plugin.xml para definir o teste. Esses atributos também podem ser acessados programaticamente utilizando os métodos WMQTest listados na tabela a seguir.

Método Descrição
getTestID() Retorna o ID do teste.
getTestName() Retorna o nome do teste.
getDescription() Retorna a descrição do teste.
getTestSet() Retorna um identificador para o objeto do conjunto de testes criado para ser pai do teste.
getFurtherInfoPath() Retorna o local do documento XHTML ou HTML que contém mais informações sobre o teste.

Criando o Teste

O mecanismo de Testes do IBM MQ Explorer instancia o objeto de teste usando o construtor fornecido WMQTest(). Não há necessidade de dividir esse construtor em subclasses.

Estrutura do Teste

O método runTest de WMQTest define o corpo do teste e é chamado para iniciar uma execução de teste.

O final do método runTest não implica no final do teste; é necessário especificar explicitamente o final do teste utilizando o método testComplete. Os testes podem ser implementados para que obtenham os dados de objetos de forma assíncrona.

O método runTest envia um pedido para obter dados sobre os objetos e o teste é executado a partir do método listener que recebe a resposta. Isso permite que o teste aguarde os dados sem que você precise implementar a espera de encadeamento; isso é demonstrado na Amostra 3.

Se uma espera manual (suspensão) for necessária como parte de um teste, você poderá usar o monitor de objeto para o objeto de teste usar os métodos Java wait e notify. O encadeamento do mecanismo de teste é implementado sem utilizar os monitores de objetos de objetos de teste individuais.

Executando o Teste

O mecanismo de Testes do IBM MQ Explorer chama runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) para iniciar a execução do teste. O corpo principal do teste deve estar aqui.

WMQTestEngine
O parâmetro WMQTestEngine fornece um identificador para o mecanismo de teste que está executando o teste.

Isso é fornecido para que os testes retornem resultados enquanto um teste está em progresso utilizando o método returnResult(WMQTestResult[], WMQTest) do mecanismo do teste.

O primeiro parâmetro desse método (WMQTestResult[]) contém os resultados a serem retornados e o segundo (WMQTest) deve ser 'this', para que o mecanismo de teste saiba de onde vem os resultados. O uso do parâmetro WMQTestEngine para retornar resultados provisórios é opcional - como alternativa, os resultados do teste podem ser retornados na conclusão do teste (consulte Concluindo o Teste).

IProgressMonitor
O parâmetro IProgressMonitor fornece um identificador para o monitor de feedback da GUI que está sendo utilizado para a execução de teste atual. Isso permite que seu teste forneça tanto o feedback textual na tarefa e subtarefas atualmente em execução, quanto uma barra de progresso para a conclusão atual.

O identificador para o Monitor de Progresso é armazenado em cache pela implementação padrão de runTest, portanto, se isso tiver sido utilizado, um identificador para o Monitor de Progresso também poderá ser acessado utilizando-se o método WMQTest getGUIMonitor().

O Monitor de Progresso é um recurso núcleo do Eclipse. Consulte a Documentação da API do Eclipse na web para obter orientações adicionais sobre o uso dela.

contextObjects
O parâmetro contextObjects fornece uma matriz MQExtObject. O parâmetro fornece o contexto do teste a ser executado para que as caixas de opções relevantes sejam pré-selecionadas quando o usuário abrir o diálogo Executar Testes.
treeNode
O parâmetro treeNode registra qual pasta ou objeto na visualização do Navegador foi clicado para executar os testes padrão ou para abrir o diálogo Executar Testes.

Preferências do Usuário

Os testes devem estar em conformidade com as preferências do usuário fornecidas com o uso do diálogo Preferências do Eclipse. Utilize os métodos a seguir para acessar as preferências:

  • PreferenceStoreManager.getIncludeHiddenQmgrsPreference() que retorna true se você incluir gerenciadores de filas que estão ocultos no IBM MQ Explorer no teste, ou false se tiverem que ser excluídos.
  • PreferenceStoreManager.getIncludeSysObjsPreference() que retornará true se objetos do sistema (objetos que possuem nomes começando com SYSTEM.) tiverem que ser incluídos no teste ou false se tiverem que ser excluídos.

Concluindo o Teste

Conclua um teste chamando testComplete(WMQTestResult[]), transmitindo a ele uma matriz de objetos de resultados do teste. Consulte Criando um Resultado de Teste para obter orientação sobre objetos de resultados do teste.

É possível retornar resultados na conclusão, usando este método como uma adição, ou como uma alternativa ao retorno de resultados do teste durante uma execução de teste (conforme explicado em Executando o Teste). No entanto, os resultados retornados em duplicidade serão exibidos duas vezes.

Mesmo que seu teste utilize o método returnResult do WMQTestEngine para retornar todos seus resultados, ele ainda deverá chamar testComplete na conclusão. Isso é necessário para concluir o processamento do teste. Você poderá fornecer uma matriz vazia de objetos WMQTestResult no método testComplete se não houver novos resultados a serem retornados.

Para obter mais informações, consulte Estrutura do Teste.

Criando um Resultado de Teste

Os resultados de teste são implementados como objetos WMQTestResult. Crie resultados utilizando:

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

em que:

  • severity é um inteiro que identifica a gravidade do problema. Utilize um dos seguintes níveis de gravidade: IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING ou IMarker.SEVERITY_INFO
  • description é a sequência, que explica o problema encontrado pelo teste, a ser exibida na Visualização Problemas
  • qmgrname é o nome do gerenciador de filas onde o problema foi localizado.
  • objectType é uma sequência que fornece a classe do objeto onde o problema pode ser localizado, por exemplo, "Filas" ou "Canais").

Para obter informações adicionais sobre o que fazer com o objeto de resultados do teste quando ele for criado, consulte Concluindo o Teste.

Tratando do Cancelamento

É possível cancelar a execução do teste durante sua execução. Utilize o método isCancelled() para verificar se um teste deve parar.

Um teste adequado deve verificar regularmente se foi cancelado para evitar que um usuário se atrase desnecessariamente.

Se você tentar cancelar um teste, mas não obtiver resposta durante um longo período, o mecanismo do teste forçará sua parada finalizando o encadeamento que está executando o teste. Não confie neste método, pois é preferível que um teste responda em tempo, permitindo a limpeza dos recursos utilizados e o retorno de resultados do teste gerados até o momento.

Documentação do Teste

É possível fornecer documentação adicional para explicar os resultados retornados e fornecer orientação sobre o que deve ser feito para resolver o problema.

Forneça documentação em HTML, com o local identificado no arquivo plugin.xml do plug-in que fornece o teste. Para obter detalhes sobre como definir testes em XML, consulte Criando um Novo Teste.

O local do arquivo HTML da documentação pode ser:

  • interno - Armazenado no projeto de plug-in que fornece o próprio teste. O local deve ser definido no XML em relação ao próprio arquivo plugin.xml. Por exemplo, doc/TestDoc.html
  • externo - Armazenado em um servidor da Web, permitindo manutenção da documentação separadamente do próprio teste. O local deve ser definido com uma URL completa, começando com 'http://'.