Windows-Registrierung mit Functional Tester lesen

Bei der Windows®-Registrierung handelt es sich um eine Datenbank, die vom Betriebssystem Windows zum Speichern von Konfigurationsdaten verwendet wird. Häufig ist es für einen Tester erforderlich, über Functional Tester-Befehle Informationen aus dieser Datenbank auszulesen. Im vorliegenden Abschnitt finden Sie entsprechende Beispiele.

Das folgende Beispiel gilt für Scripts, die unter Windows ausgeführt werden:

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 + ")" );
	    }
	}
	}

Functional Tester-Benutzern stehen zwei Befehle zur Verfügung, mit deren Hilfe Sie Werte aus der Registrierung auslesen können. Der Befehl getRegistryValue wird dazu verwendet, Zeichenfolgewerte aus der Registrierung auszulesen. Der Befehl getRegistryIntValue dient dazu, ganzzahlige Werte aus der Registrierung auszulesen. Mit den Bedingungen "REG_SZ" werden die Zeichenfolgewerte und ganzzahligen Werte gekennzeichnet. Beide Befehle arbeiten mit einem Argument des Typs String (Zeichenfolge), das den zu extrahierenden Registrierungsschlüssel enthält.

Anmerkung: Bei der Eingabe von Schlüsseln gilt "\" in Java™ als Sonderzeichen und muss verdoppelt ("\\") werden, um als Literal zu gelten.

In dem Beispiel wird sowohl ein Zeichenfolgewert als auch ein ganzzahliger Wert aus der Registrierung ausgelesen. Betrachten Sie zunächst das Segment mit dem Wert des Typs String und dessen Kerncode:

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);

In der ersten Zeile wird eine Variable des Typs String erzeugt, die den zu extrahierenden Registrierungswert enthält. In der zweiten Zeile wird der Befehl ausgeführt und in der Variablen regValueString des Typs String gespeichert. In der dritten Zeile wird die Klasse JOptionPane.showMessageDialog dazu verwendet, den Registrierungswert in einem Nachrichtenfenster auf dem Bildschirm anzuzeigen. Für diejenigen, die mit der letztgenannten Klasse nicht vertraut sind, noch der Hinweis, dass es sich dabei um eine Java Swing-Klasse handelt. Um mit dieser Klasse in Functional Tester arbeiten zu können, müssen Sie die Klasse zunächst importieren. Beachten Sie die letzte import-Anweisung am Anfang des Scripts.

Mit dem zweiten Segment wird der Wert des Typs int extrahiert. Im vorliegenden Beispiel wird der einfache Typ int in ein Integer-Objekt konvertiert und kann dann im Dialog JOptionPane angezeigt werden. Ansonsten bleibt der Code identisch mit dem ersten Segment.

Bei beiden Befehlen wird im Falle eines Fehlers eine NoSuchRegistryKeyException-Ausnahmebedingung ausgelöst. Aus diesem Grund bietet es sich an, diese Methoden (wie im Beispiel gezeigt) in einem Try/Catch-Block wiederzuverwenden. Sie können den Registrierungsschlüssel in einen nicht existenten Schlüssel ändern und das Script ausführen. Daraufhin werden Sie durch eine entsprechende Fehlernachricht darüber informiert, dass der Schlüssel nicht gefunden werden konnte.


Feedback