È possibile creare diversi file di personalizzazione. Quando si avvia Functional Tester, questo legge tutti i file di personalizzazione e memorizza i dettagli nella memoria condivisa. Ulteriori riferimenti ai file di personalizzazione vengono eseguiti nella memoria condivisa.
Il file di personalizzazione è un file XML con diverse sezioni che sono contrassegnate con tag <Section></Section>. Ogni sezione ha un nome e contiene il contenuto tra le tag. L'esempio riportato di seguito mostra una sezione di base:
<Section L=".ConfigFileSection"> <Name>Section Name</Name> . . Section content . </Section >
Le sezioni sono facoltative ed è possibile inoltre inserire sezioni vuote in un file di personalizzazione. Ogni sezione ha la propria sintassi. Relativamente ai componenti di sezione che richiedono l'implementazione in entrambi i modelli di componenti (Java™ e .NET ) devono essere presenti due tag <ComponentModel>, una per Java e una per .NET:
<ComponentModel L=".ComponentModel"> <Name>Java</Name> </ComponentModel> <ComponentModel L=".ComponentModel"> <Name>Net</Name> </ComponentModel>
La sezione proxies è quella più comunemente utilizzata. Essa contiene una tag <DomainImplementation> per ogni dominio di test per la specifica di classi proxy distribuite e i nomi classe dell'AUT (application under test) associata per cui viene utilizzato il proxy. All'interno della tag <DomainImplementation>, le tag <Obj L=".Proxy"> vengono utilizzate per ogni classe proxy stabilita e le tag <UsedBy> specificano il nome di classe del controllo AUT.
È possibile avere più di una tag <UsedBy> per una sola classe proxy se si desidera utilizzare lo stesso proxy per controlli simili.
È necessario utilizzare le tag <Section> in modo appropriato, rispondendo ai relativi requisiti e componenti di estensione da distribuire nel framework Functional Tester.
Di seguito è riportata la sintassi completa del file di personalizzazione principale.
<?xml version="1.0" encoding="UTF-8"?> <ConfigFile L=".ConfigFile"> <--Proxy Section: all the proxies are defined here domain wise--> <Section L=".ConfigFileSection"> <Name>proxies</Name> <Val L=".ProxyManager"> <DomainImplementation L=".DomainImplementation"> <Name>Java</Name> <Obj L=".Proxy"> <ClassName></ClassName> <Replaces/> <UsedBy></UsedBy> . . </Obj> . . </DomainImplementation> <DomainImplementation L=".DomainImplementation"> <Name>Net</Name> <Obj L=".Proxy"> <ClassName></ClassName> <Replaces/> <UsedBy></UsedBy> . . </Obj> . . </DomainImplementation> <DomainImplementation L=".DomainImplementation"> <Name>Win</Name> <Obj L=".Proxy"> <ClassName></ClassName> <Replaces/> <UsedBy></UsedBy> . . </Obj> . . </DomainImplementation> . . </Val> </Section> <--ValueManager Section: all newly defined Value and Valuemanager classes are defined here --> <Section L=".ConfigFileSection"> <Name>valueManagers</Name> <Val L=".ValueManagerManager"> <ComponentModel L=".ComponentModel"> <Name>Java</Name> <Obj L=".ValueManager"> <Id></Id> <ValueClass></ValueClass> <Manager></Manager> </Obj> </ComponentModel> <ComponentModel L=".ComponentModel"> <Name>Net</Name> <Obj L=".ValueManager"> <Id></Id> <ValueClass></ValueClass> <Manager></Manager> </Obj> </ComponentModel> </Val> </Section> <--Value Converter Section: --> <Section L=".ConfigFileSection"> <Name>valueConverters</Name> <Val L=".ValueConverterManager"> </Val> </Section> <--Property Converter Section: --> <Section L=".ConfigFileSection"> <Name>propertyConverters</Name> <Val L=".PropertyConverterManager"> <ComponentModel L=".ComponentModel"> <Name>Java</Name> <Obj L=".PropertyConverter"> <Property></Property> <Converter></Converter> </Obj> </ComponentModel> <ComponentModel L=".ComponentModel"> <Name>Net</Name> <Obj L=".PropertyConverter"> <Property></Property> <Converter></Converter> </Obj> </ComponentModel> </Val> </Section> <--Options Converter Section: --> <Section L=".ConfigFileSection"> <Name>options</Name> <Val L=".Options"> <Obj L=".Option"> <Name></Name> <Type></Type> <ReadOnly></ReadOnly> <DefaultValue/> <Description></Description> <Label/> <Category></Category> <LegalValues/> </Obj> </Val> </Section> <-- RoleMap Section: --> <Section L=".ConfigFileSection"> <Name>roleMap</Name> <Val L=".RoleMap"> <Role L=".Role"> <Name></Name> <Icon></Icon> </Role> </Val> </Section> <--TestObject Section: canonical name for all the newly created testobjects defined here --> <Section L=".ConfigFileSection"> <Name>testObjects</Name> <Val L=".TestObjectManager"> <ComponentModel L=".ComponentModel"> <Name>Java</Name> <Obj L=".TestObject"> <CanonicalName></CanonicalName> <TestObject></TestObject> </Obj> . . </ComponentModel> <ComponentModel L=".ComponentModel"> <Name>Net</Name> <Obj L=".TestObject"> <CanonicalName></CanonicalName> <TestObject></TestObject> </Obj> . . </ComponentModel> </Val> </Section> </ConfigFile>