Le registre Windows est une sorte de base de données utilisée par le système d'exploitation Windows pour stocker toutes les informations de configuration. Il n'est pas rare que le testeur ait besoin de lire les informations de cette base de données en utilisant des commandes de Functional Tester. L'exemple suivant s'applique aux scripts exécutés sous 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 : 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 { //Utiliser ce code pour lire les valeurs de type chaîne (REG_SZ) dans le registre. String regKeyString =HKEY_LOCAL_MACHINE\\SOFTWARE\\ Rational Software\\Rational Test\\8\\Data Directory"; String regValueString getOperatingSystem().getRegistryValue(regKeyString); JOptionPane.showMessageDialog(null, regValueString, "Valeur de registre de type String",1); } catch (NoSuchRegistryKeyException e) { JOptionPane.showMessageDialog(null, "Erreur : clé de registre introuvable."); System.out.println ("Exception NoSuchRegistryKeyException." + e); } try { //Utiliser ce code pour lire les valeurs de type entier (DWORD) dans le registre. String regKeyInt = "HKEY_CURRENT_USER\\Control " + "Panel\\Desktop\\LowLevelHooksTimeout"; Integer regValueInt = new Integer(getOperatingSystem().getRegistryIntValue(regKeyInt)); JOptionPane.showMessageDialog(null,regValueInt, "Valeur de registre " + de type Integer",1); } catch (NoSuchRegistryKeyException e) { JOptionPane.showMessageDialog(null, "Erreur : clé de registre introuvable."); System.out.println ("Exception NoSuchRegistryKeyException. (" + e + ")" ); } } }
Deux commandes sont à la disposition des utilisateurs de Functional Tester pour
lire les valeurs du registre. La commande getRegistryValue
sert à lire
les valeurs de type chaîne. La commande getRegistryIntValue
sert à lire les valeurs de type entier (integer). Les termes "REG_SZ" et "DWORD"
décrivent respectivement ces deux types de données. Les deux commandes reçoivent un argument
de type String
qui contient le nom de la clé de registre dont on souhaite lire la
valeur.
Remarque : La barre oblique inversée ("\") est un caractère spécial en Java. Lorsque vous entrez le nom des clés de registre, veillez à doubler les barres obliques ("\\") afin qu'elles soient interprétées sous leur forme littérale.
Dans l'exemple qui précède, on lit dans le registre une valeur de type chaîne et une valeur de type
entier. Examinons le code plus en détail en commençant par le premier segment, qui lit
une valeur de clé de type chaîne (String
) :
String regKeyString =
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Rational
Test\\8\\Data Directory";
String regValueString =
getOperatingSystem().getRegistryValue(regKeyString);
JOptionPane.showMessageDialog(null, regValueString, "Valeur
de registre de type String",1);
La première ligne crée une variable de type String
, qui contient le nom
de la clé de registre dont on souhaite lire la valeur.
La seconde ligne exécute la commande et stocke son résultat dans une autre variable
de type String
appelée regValueString
.
La troisième ligne utilise la classe JOptionPane.showMessageDialog
pour présenter
la valeur lue dans une boîte de message affichée à l'écran. Il s'agit d'une classe Java Swing standard
qui doit être importée afin que Functional Tester puisse en disposer. C'est ce que fait la dernière instruction import
,
au début du script.
Le second segment extrait du registre une valeur de type entier (int
). Dans l'exemple,
le type simple int
est converti en objet Integer
afin qu'il puisse être
affiché dans la boîte de dialogue créée par JOptionPane
.
Cette différence mise à part, le code est identique à celui du premier segment.
Les deux commandes lancent une exception NoSuchRegistryKeyException
en cas d'échec. Pour cette raison, il est bon d'encapsuler ces méthodes dans un bloc
try/catch, comme dans l'exemple. Essayez de remplacer le nom de la clé de registre par celui d'une clé qui
n'existe pas, puis exécutez le script. Vous obtiendrez un message d'erreur signalant que la clé
n'a pas été trouvée.
Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2002, 2004. All Rights Reserved.