Bei der Windows-Registrierung handelt es sich um eine Datenbank, die vom Betriebssystem Windows zum Speichern von Konfigurationsdaten verwendet wird. Häufig müssen Tester über Functional Test-Befehle Informationen aus dieser Datenbank auslesen. Das folgende Beispiel gilt für Scripts, die unter Windows ausgeführt werden:
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 : Functional Test 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 : Functional Test 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 { //Use this code to extract String (REG_SZ) values from the registry. 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 { //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 Test-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.
Hinweis: 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\\Data 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, sei noch der Hinweis gegeben, dass es sich dabei um eine Java Swing-Klasse handelt. Um mit dieser Klasse in Functional Test 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 über eine entsprechende Fehlernachricht darüber informiert, dass der Schlüssel nicht gefunden werden konnte.
Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2002, 2004. Alle Rechte vorbehalten.