Lectura del registro de Windows con Functional Tester

El registro de Windows® es una base de datos que utiliza el sistema operativo Windows para almacenar información de la configuración. A menudo, el verificador lo necesita para extraer información de esta base de datos utilizando mandatos de Functional Tester. En este tema se ofrecen ejemplos para hacerlo.

El siguiente ejemplo se puede aplicar a aquellos scripts que se ejecuten en 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
	    {
	        //Use this code to extract String (REG_SZ) values from the registry.
	    	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
	    {
	        //Use this code to extract Integer (DWORD) values from the registry.
	        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 + ")" );
	    }
	}
	}

Los usuarios disponen de dos mandatos de Functional Tester para leer valores de los registros. El mandato getRegistryValue se utiliza para leer valores de serie desde el registro. El mandato getRegistryIntValue sirve para leer valores enteros desde el registro. Los términos "REG_SZ" describen los tipos de serie y de entero. Los dos mandatos toman un argumento tipo String, que contiene la clave de registro que debe extraerse.

Nota: Cuando se escribe, el carácter "\" es especial en Java™ y debe escribirse doble (\\) para que se considere un literal.

El ejemplo extrae el valor de serie y el valor entero del registro. Si observa primero el segmento de valor String, fíjese en el 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);

La primera línea crea una variable tipo String, que contiene el valor de registro que debe extraerse. La segunda línea ejecuta el mandato y lo almacena en el tipo variable String regValueString. La tercera línea utiliza la clase JOptionPane.showMessageDialog para mostrar el valor de registro en un recuadro de mensaje de la pantalla. Para los usuarios con pocos conocimientos de esta última clase, se trata de una clase Java Swing, que debe importarse para que esté disponible en Functional Tester. Observe la última declaración import en la parte superior del script.

El segundo segmento extrae el valor de tipo int. En el ejemplo, el tipo int simple se convierte en un objeto Entero, de forma que se pueda visualizar en el diálogo JOptionPane. De lo contrario, el código será idéntico al del primer segmento.

Ambos mandatos emiten una excepción NoSuchRegistryKeyException cuando se producen anomalías. Por tanto, es una buena idea ajustar estos métodos dentro del bloque try/catch, como en el ejemplo. Puede cambiar el registro por uno que no exista y ejecutar el script. Verá un mensaje de error que indica que la tecla no se ha podido encontrar.


Comentarios