Opsiyon yönetimi, Ticaret Federasyonu'nun modüler yaklaşımının merkezinde yer almaktadır. Özellikle seçenekler, Geliştiricinin, Entegratörün ve Test Çalıştırıcısının birbirlerinin çalışmalarını kopyalamak zorunda kalmadan birlikte çalışabilecekleri mekanizmadır. Basitçe söylemek gerekirse, seçenek işleme uygulamamız, Geliştiricinin bir Java sınıfı üyesini yapılandırılabilir olarak işaretlemesine olanak tanır; bu noktada bu üyenin değeri Entegratör tarafından artırılabilir veya geçersiz kılınabilir ve daha sonra Test Çalıştırıcısı tarafından artırılabilir veya geçersiz kılınabilir. Bu mekanizma, tüm Java içsel türlerinin yanı sıra, içsel türlerin tüm Map
veya Collection
için de çalışır.
Not: Seçenek işleme mekanizması yalnızca Test Yaşam Döngüsü'nde yer alan arayüzlerden birini uygulayan sınıflar için ve yalnızca bu sınıf yaşam döngüsü makinesi tarafından başlatıldığında çalışır.
Geliştirici
Başlangıç olarak geliştirici bir üyeyi @Option
ek açıklamasıyla işaretler. Bu Seçenek ile ilişkili bağımsız değişken adını belirten name
ve description
değerlerini (en azından) ve komut --help
veya --help-all
ile çalıştırıldığında TF konsolunda görüntülenecek açıklamayı belirtirler.
Örnek olarak, çeşitli telefon numaralarını çevirecek ve bağlandıktan sonra her numaradan bir dizi DTMF tonu almayı bekleyecek işlevsel bir telefon testi oluşturmak istediğimizi varsayalım.
public class PhoneCallFuncTest extends IRemoteTest { @Option(name = "timeout", description = "How long to wait for connection, in millis") private long mWaitTime = 30 * 1000; // 30 seconds @Option(name = "call", description = "Key: Phone number to attempt. " + "Value: DTMF to expect. May be repeated.") private Map<String, String> mCalls = new HashMap<String, String>; public PhoneCallFuncTest() { mCalls.add("123-456-7890", "01134"); // default }
Geliştiricinin bu test için iki yapılandırma noktası ayarlaması için gereken tek şey budur. Daha sonra mWaitTime
ve mCalls
, yapılandırılabilir olmalarına fazla dikkat etmeden normal şekilde kullanabilirler. @Option
alanları, sınıf başlatıldıktan sonra ancak run
yöntemi çağrılmadan önce ayarlandığından, bu, uygulayıcılara varsayılanları ayarlamaları veya Map
ve Collection
alanları üzerinde bir tür filtreleme yapmaları için kolay bir yol sağlar. sadece.
Entegratör
Entegratör, XML ile yazılmış Konfigürasyonlar dünyasında çalışır. Yapılandırma formatı Entegratörün herhangi bir @Option
alanı için bir değer ayarlamasına (veya eklemesine) olanak tanır. Örneğin, Entegratörün, varsayılan numarayı çağıran daha düşük gecikme süreli bir testin yanı sıra çeşitli numaraları çağıran uzun süreli bir test tanımlamak istediğini varsayalım. Aşağıdaki gibi görünebilecek bir çift konfigürasyon oluşturabilirler:
<?xml version="1.0" encoding="utf-8"?> <configuration description="low-latency default test; low-latency.xml"> <test class="com.example.PhoneCallFuncTest"> <option name="timeout" value="5000" /> </test> </configuration>
<?xml version="1.0" encoding="utf-8"?> <configuration description="call a bunch of numbers; many-numbers.xml"> <test class="com.example.PhoneCallFuncTest"> <option name="call" key="111-111-1111" value="#*#*TEST1*#*#" /> <option name="call" key="222-222-2222" value="#*#*TEST2*#*#" /> <!-- ... --> </test> </configuration>
Test Çalıştırıcısı
Test Çalıştırıcısının ayrıca Ticaret Federasyonu konsolu aracılığıyla bu yapılandırma noktalarına erişimi vardır. İlk ve en önemlisi, run command <name>
talimatıyla (veya kısaca run <name>
) bir Komutu (yani bir yapılandırmayı ve onun tüm argümanlarını) çalıştıracaklar. Bunun ötesinde, her yapılandırmada Yaşam Döngüsü Nesneleri tarafından belirtilen alanların yerini alabilecek veya bu alanlara eklenebilecek, komutun parçası olan herhangi bir bağımsız değişken listesini belirtebilirler.
Düşük gecikmeli testi many-numbers
telefon numaralarıyla çalıştırmak için Test Çalıştırıcısı şunları gerçekleştirebilir:
tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#
Veya ters yönden benzer bir etki elde etmek için Test Çalıştırıcısı, many-numbers
testi için bekleme süresini azaltabilir:
tf> run many-numbers.xml --timeout 5000
Seçenek Sıralaması
Uygulamanın temelindeki call
seçeneğinin bir Map
olduğunu ve komut satırında --call
tekrarlandığında bunların hepsinin saklanacağını fark edebilirsiniz.
Temelinde long
uygulaması bulunan timeout
seçeneği yalnızca bir değer saklayabilir. Böylece yalnızca belirtilen son değer saklanacaktır. --timeout 5 --timeout 10
10 içeren timeout
ile sonuçlanacaktır.
Temel uygulama olarak bir List
veya Collection
olması durumunda, tüm değerler komut satırında belirtilen sıraya göre saklanacaktır.
Boole Seçenekleri
Boolean temel türündeki seçenekler, doğrudan seçenek adı iletilerek true
olarak ayarlanabilir, örneğin --[option-name]
ve --no-[option-name]
sözdizimi kullanılarak false
olarak ayarlanabilir.