Lendo o Registro do Windows com o Teste Funcional

O registro do Windows é um banco de dados utilizado pelo sistema operacional Windows para armazenar informações de configuração. Freqüentemente um testador tem a necessidade de ler informações nesse banco de dados utilizando comandos do Teste Funcional. O exemplo a seguir aplica-se a scripts em execução no Windows:

import resources.RegistryExampleHelper;
import com.rational.test.ft.*;
import com.rational.test.ft.object.interfaces.*;
import com.rational.test.ft.script.*;
import com.rational.test.ft.value.*;
import com.rational.test.ft.vp.*;
import javax.swing.JOptionPane;


/** * Description : Teste Funcional Script * @author Administrator */ public class RegistryExample extends RegistryExampleHelper {     /**     * Script Name   : RegistryExample     * Generated     : Dec 14, 2005 3:58:25 PM     * Modified      : Dec 14, 2005 3:58:25 PM     * Description   : Teste Funcional Script     * Original Host : WinNT Version 5.0 Build 2195 (Service Pack 3)     *     * @since 2005/12/14     * @author Administrator     */     public void testMain (Object[] args)        {           setOption (IOptionName.BRING_UP_LOGVIEWER, false);           try        {           //Utilizar esse código para extrair valores String (REG_SZ) do registro.           String regKeyString =HKEY_LOCAL_MACHINE\\SOFTWARE\\              Rational Software\\Rational Test\\8\\Data Directory";           String regValueString              getOperatingSystem().getRegistryValue(regKeyString);           JOptionPane.showMessageDialog(null, regValueString,              "String Registry Value",1);        }           catch (NoSuchRegistryKeyException e)        {           JOptionPane.showMessageDialog(null, "Error finding registry key.");           System.out.println ("No Such Registry Key Exception." + e);        }           try        {           //Utilizar esse código para extrair valores Integer (DWORD) do registro.           String regKeyInt = "HKEY_CURRENT_USER\\Control " +              "Panel\\Desktop\\LowLevelHooksTimeout";           Integer regValueInt = new              Integer(getOperatingSystem().getRegistryIntValue(regKeyInt));           JOptionPane.showMessageDialog(null,regValueInt, "Integer Registry " +              Value",1);        }           catch (NoSuchRegistryKeyException e)        {           JOptionPane.showMessageDialog(null, "Error finding registry key.");           System.out.println ("No Such Registry Key Exception. (" + e + ")" );        }        } }

Há dois comandos disponíveis para usuários do Teste Funcional lerem valores do registro. O comando getRegistryValue é utilizado para ler valores de cadeia do registro. O comando getRegistryIntValue é utilizado para ler valores inteiros do registro. Os termos "REG_SZ" descrevem os tipos de cadeia e de inteiro. Ambos os comandos utilizam um tipo de argumento String, que contém a chave de registro a ser extraída.

Nota: Ao digitar as teclas, a "\" é um caractere especial em Java e deve ser dobrado para "\\" para ser utilizado como literal.

O exemplo extrai os dois valores, de cadeia e de inteiro do registro. Olhando primeiramente o segmento de valor String, observe o código núcleo:

String regKeyString =
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Rational
Test\\8\\Data Directory";
String regValueString =
getOperatingSystem().getRegistryValue(regKeyString);
JOptionPane.showMessageDialog(null, regValueString, "String
Registry Value",1);

A primeira linha cria um tipo de variável String, que contém o valor do registro a ser extraído. A segunda linha executa o comando e o armazena no tipo String variável regValueString. A terceira linha utiliza a classe JOptionPane.showMessageDialog para exibir o valor do registro em uma caixa de mensagem na tela. Para aqueles que não conhecem essa última classe, é uma classe Java Swing que deve ser importada para estar disponível para o Teste Funcional. Observe a última instrução import no início do script.

O segundo segmento extrai o valor de tipo int. No exemplo, o tipo simples int é convertido em um objeto Integer, para que possa ser exibido no diálogo JOptionPane. Caso contrário, o código será idêntico ao do primeiro segmento.

Os dois comandos lançam uma NoSuchRegistryKeyException ao falharem. Portanto, é interessante agrupar esses métodos em um bloco try/catch, como no exemplo. Você pode alterar a chave de registro para uma que não exista e executar o script. Você verá uma mensagem de erro indicando que a chave não pôde ser localizada.

Termos de uso | Feedback
(C) Copyright IBM Corporation 2002, 2004. Todos os Direitos Reservados.