Interface WMQTest

Os testes gravados para IBM® MQ Explorer devem pertencer a uma classe 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 manifesto do plug-in (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.
nome Um nome significativo para o teste.
class O nome da classe Java que contém o código-fonte do teste.
testset Uma sequência que define o grupo no qual será exibido o teste; por exemplo,wmq, que exibe o teste na categoria Testes gerenciadores de filas .
testsubset Uma sequência que define o sub-grupo no qual será exibido o teste; por exemplo,queues, que exibe o teste na categoria Filas .
descrição 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 em IBM MQ Explorer ao dar um duplo clique no teste no diálogo Executar Testes ou em um resultado de teste na visualização Resultados do Teste.

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 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 WMQTest runTest define o corpo do teste, e é chamado para iniciar uma execução de teste.

O final do método runTest não implica o fim do teste. Deve-se especificar explicitamente o final do teste usando 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 uma solicitação para obter dados sobre objetos e o teste é executado a partir do método do listener que recebe a resposta. Isto possibilita que o teste espere por dados sem que você precise implementar encadeamento esperando; isso é demonstrado em Amostra 3.

Se uma espera manual (dormir) for necessária como uma parte de um teste, você pode usar o monitor de objetos 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 IBM MQ Explorer Testes chama runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) para iniciar o teste em execução. 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 permitir que os testes retornem resultados enquanto um teste está em andamento usando o método returnResult(WMQTestResult[], WMQTest) do mecanismo de teste.

O primeiro parâmetro deste método (WMQTestResult[]) contém os resultados a serem retornados e o segundo parâmetro (WMQTest) deve ser 'this', de modo que o mecanismo de teste saiba de onde vieram os resultados. Usando o parâmetro WMQTestEngine para retornar resultados provisórios é opcional, e alternativamente os resultados do teste podem ser retornados na conclusão do teste (veja Completando o teste).

IProgressMonitor
O parâmetro IProgressMonitor fornece uma alça para o monitor de feedback da GUI sendo usado para a execução do 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.

A alça para o Monitor de Progresso é armazenada em cache pela implementação padrão de runTest, portanto, se este tiver sido usado, uma alça para o Monitor de Progresso também pode ser acessada usando o método WMQTest getGUIMonitor().

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

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 Navigator 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 foram escondidos em IBM MQ Explorer no teste, ou false se eles devem ser excluídos.
  • PreferenceStoreManager.getIncludeSysObjsPreference() que retorna true se objetos do sistema (objetos que possuem nomes iniciados com SYSTEM.) devem ser incluídos no teste, ou false se devem ser excluídos.

Concluindo o Teste

Complete um teste chamando testComplete(WMQTestResult[]), passando-o uma matriz de objetos de resultado do teste. Veja Criando um resultado de teste para orientação sobre objetos de resultado do teste.

Você pode retornar resultados na conclusão usando este método além de, ou como uma alternativa para, retornando resultados de teste durante uma execução de teste (conforme explicado em Running the test). No entanto, os resultados retornados em duplicidade serão exibidos duas vezes.

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

Para obter mais informações, consulte Estrutura de teste.

Criando um Resultado de Teste

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

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

em que:

  • severity é um número inteiro identificando a gravidade do problema. Use um dos seguintes níveis de severidade: IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING ou IMarker.SEVERITY_INFO
  • description é a sequência explicando o problema encontrado pelo teste, a ser exibido na Visualização de Problemas.
  • qmgrname é o nome do gerenciador de filas onde o problema foi encontrado.
  • objectType é sequência de caracteres que da a classe de objeto onde o problema pode ser encontrado, por exemplo, "Filas" ou "Canais".

Para obter mais informações sobre o que fazer com o objeto de resultado do teste quando ele foi criado, consulte Concluindo o teste.

Tratando do Cancelamento

É possível cancelar a execução do teste durante sua execução. Use 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 a definição de 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://'.