Lendo o Registro do Windows com o Functional Tester

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 Functional Tester. Este tópico fornece exemplos para fazer isso.

O exemplo a seguir é aplicável para scripts em execução no Windows:

import javax.swing.JOptionPane;

import resources.RegistryExampleHelper;
import com.rational.test.ft.*;
import com.rational.test.ft.object.interfaces.*;
import com.rational.test.ft.object.interfaces.SAP.*;
import com.rational.test.ft.object.interfaces.siebel.*;
import com.rational.test.ft.script.*;
import com.rational.test.ft.value.*;
import com.rational.test.ft.vp.*;

/**
 * Description   : Functional Test Script
 * @author Administrator
 */
public class RegistryExample extends RegistryExampleHelper
{
	/**
	 * Script Name   : RegistryExample
	 * Generated     : Jul 20, 2006 1:48:49 PM
	 * Description   : Functional Test Script
	 * Original Host : WinNT Version 5.1  Build 2600 (S)
	 * 
	 * @since  2006/07/20
	 * @author Administrator
	 */
	public void testMain (Object[] args)
	{
	    try
	    {
         //Utilizar esse código para extrair valores String (REG_SZ) do registro.
	    	String regKeyString ="HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Rational Test\\8\\Rational FT Install 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 Functional Tester 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 "\\" ser utilizado como uma 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\\Rational FT Install 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 que deve ser importada para estar disponível para o Functional Tester. 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.


Feedback