Seçeneklerin işlenmesi, Trade Federation'ın modüler yaklaşımının merkezinde yer alı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ışabileceği mekanizmadır. Basitçe söylemek gerekirse, seçenekleri işleme uygulamamız geliştiricinin bir Java sınıf üyesini yapılandırılabilir olarak işaretlemesine olanak tanır. Bu noktada, söz konusu üyenin değeri Entegre Edici 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 doğal türleri ve doğal türlerin Map
veya Collection
örnekleri için çalışır.
Not: Seçenek işleme mekanizması yalnızca Test Yaşam Döngüsü'ne dahil edilen arayüzlerden birini uygulayan sınıflar için çalışır ve yalnızca bu sınıf yaşam döngüsü mekanizması tarafından oluşturulduğunda çalışır.
Geliştirici
Geliştirici, başlangıçta bir üyeyi @Option
notuyla işaretler.
Bu seçenekler, en azından name
ve description
değerlerini belirtir. Bu değerler, ilgili seçenekle ilişkili bağımsız değişken adını ve komut --help
veya --help-all
ile çalıştırıldığında TF konsolunda gösterilen açıklamayı belirtir.
Örneğin, çeşitli telefon numaralarını çeviren ve bağlandıktan sonra her numaradan bir DTMF zil sesi dizisi almayı bekleyen 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ı oluşturması gereken tek şey budur. Ardından, mWaitTime
ve mCalls
'u yapılandırılabilir olmalarına fazla dikkat etmeden normal şekilde kullanabilirler. @Option
alanları, sınıf oluşturulduktan sonra ancak run
yöntemi çağrılmadan önce ayarlandığından, uygulayıcıların varsayılan ayarları belirlemesi veya aksi takdirde salt ekleme olan Map
ve Collection
alanlarında bir tür filtreleme yapması için kolay bir yol sağlar.
Entegre eden
Entegratör, XML biçiminde yazılmış yapılandırmalar dünyasında çalışır. Yapılandırma biçimi, entegre edicinin herhangi bir @Option
alanı için değer ayarlamasına (veya eklemesine) olanak tanır. Örneğin, entegratörün varsayılan numarayı arayan düşük gecikmeli bir testin yanı sıra çeşitli numaraları arayan uzun süreli bir test tanımlamak istediğini varsayalım. Aşağıdaki gibi görünen bir çift yapılandırma 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ı, Trade Federation konsolu üzerinden de bu yapılandırma noktalarına erişebilir.
Öncelikle, run command <name>
talimatıyla (veya kısaca run <name>
) bir komut (yani bir yapılandırma ve tüm bağımsız değişkenleri) çalıştırırlar.
Bunun ötesinde, komutun bir parçası olan tüm bağımsız değişken listelerini belirtebilirler. Bu bağımsız değişkenler, her yapılandırmadaki yaşam döngüsü nesneleri tarafından belirtilen alanları değiştirebilir veya bu alanlara eklenebilir.
Test çalıştırıcı, düşük gecikmeli testi many-numbers
telefon numaralarıyla çalıştırmak için şunları yapabilir:
tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#
Alternatif olarak, Test Çalıştırıcısı, ters yönde benzer bir etki elde etmek için many-numbers
testinin bekleme süresini kısaltabilir:
tf> run many-numbers.xml --timeout 5000
Seçenek sıralaması
Uygulamanın temel aldığı call
seçeneğinin Map
olduğunu fark edebilirsiniz. Bu nedenle, komut satırında tekrarlanan --call
işlemlerinin tümü depolanır.
long
'un temel uygulamasını içeren timeout
seçeneği yalnızca bir değer saklayabilir. Bu nedenle, yalnızca belirtilen son değer depolanır.
--timeout 5 --timeout 10
, 10 içeren timeout
sonucunu döndürür.
Temel uygulama olarak List
veya Collection
kullanılıyorsa tüm değerler, komut satırında belirtilen sırada saklanır.
Boole seçenekleri
Temel Boole türündeki seçenekler, doğrudan seçenek adı (ör. --[option-name]
) ile true
olarak ayarlanabilir ve --no-[option-name]
söz dizimi kullanılarak false
olarak ayarlanabilir.