Opsiyon yönetimi, Ticaret Federasyonu'nun modüler yaklaşımının merkezinde yer alır. Özellikle seçenekler, Geliştirici, Entegratör ve Test Çalıştırıcısının birbirlerinin çalışmalarını çoğaltmak zorunda kalmadan birlikte çalışabileceği 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 o ü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ürleri için olduğu kadar, içsel türlerin herhangi bir Map
s veya Collection
s'si için de çalışır.
Not: Seçenek işleme mekanizması yalnızca Test Yaşam Döngüsüne dahil edilen arabirimlerden 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şlamak için geliştirici bir üyeyi @Option
ek açıklamasıyla işaretler. Bu Seçenek ile ilişkili argüman adını belirten name
ve description
değerlerini ve komut --help
veya --help-all
ile çalıştırıldığında TF konsolunda görüntülenecek açıklamayı (en azından) 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, yapılandırılabilir olduklarına fazla dikkat etmeden mWaitTime
ve mCalls
normal şekilde kullanabilirler. @Option
alanları, sınıf somutlaştırıldıktan sonra, ancak run
yöntemi çağrılmadan önce ayarlandığından, bu, uygulayıcıların varsayılanları ayarlaması veya Map
ve Collection
alanları üzerinde bir tür filtreleme gerçekleştirmesi için kolay bir yol sağlar; sadece.
Entegratör
Entegratör, XML'de yazılan 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) izin verir. Ö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>tutucu2 l10n-yer
<?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 Koşucusu
Test Runner'ın ayrıca Trade Federation konsolu aracılığıyla bu yapılandırma noktalarına erişimi vardır. Her şeyden önce, run command <name>
(veya kısaca run <name>
ad> komutunu çalıştırarak) bir Komut (yani, bir yapılandırma ve tüm argümanları) çalıştıracaklar. Bunun ötesinde, her yapılandırmada Yaşam Döngüsü Nesneleri tarafından belirtilen alanların yerini alabilecek veya bunlara eklenebilecek herhangi bir argüman listesinin komutun parçası olduğunu belirtebilirler.
Çok many-numbers
telefon numaralarıyla düşük gecikmeli testi çalıştırmak için Test Çalıştırıcısı şunları yürütebilir:
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 Runner, many-numbers
testin bekleme süresini azaltabilir:
tf> run many-numbers.xml --timeout 5000
Opsiyon Sıralaması
Uygulamanın altında yatan call
seçeneğinin bir Map
olduğunu fark edebilirsiniz, bu nedenle komut satırında tekrarlanan --call
hepsi saklanacaktır.
Temelde long
uygulaması olan timeout
seçeneği yalnızca bir değer depolayabilir. Böylece sadece belirtilen son değer saklanacaktır. --timeout 5 --timeout 10
, 10 içeren timeout
neden olur.
Temel uygulama olarak bir List
veya Collection
olması durumunda, tüm değerler komut satırında belirtilen sırayla saklanacaktır.
Boole Seçenekleri
Boole temel türünün seçenekleri, doğrudan seçenek adı iletilerek true
olarak ayarlanabilir, örneğin --[option-name]
ve --no-[option-name]
sözdizimi kullanılarak false
olarak ayarlanabilir.