Podejście modułowe Federacji Handlowej do wyboru leży u podstaw wielu opcji. Jeśli chodzi o opcje,
to mechanizm, dzięki któremu deweloper, integrator i tester mogą współpracować bez
powielania i powielania swoich zadań. Krótko mówiąc, nasza implementacja obsługi opcji umożliwia
Programista oznacza członka klasy Java jako konfigurowalnego, co oznacza wartość tego użytkownika.
mogą zostać uzupełnione lub zastąpione przez integratora, a następnie mogą zostać rozszerzone lub zastąpione przez
biegacza testowego. Mechanizm ten działa w przypadku wszystkich typów wbudowanych w Javie oraz
Map
lub Collection
typów wewnętrznych.
Uwaga: mechanizm obsługi opcji działa tylko w przypadku klas implementujących jeden z poniższych interfejsów uwzględnionych w cyklu życia testów i tylko wtedy, gdy ta klasa jest zainicjowane przez maszyny cyklu życia.
Programista
Na początek deweloper oznacza członka
@Option
adnotacja.
Określają one (co najmniej) wartości name
i description
, które
określ nazwę argumentu powiązaną z tą opcją oraz opis, który będzie wyświetlany
w konsoli TF, gdy polecenie zostanie uruchomione przy użyciu --help
lub --help-all
.
Załóżmy na przykład, że chcemy utworzyć test sprawnego telefonu, który będzie wybierać różne numery numerów telefonów i będą otrzymywać sekwencję dźwięków DTMF z każdego kolejnego numeru nawiązuje połączenie.
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 }
To wszystko, co deweloper potrzebuje, aby skonfigurować 2 punkty konfiguracji.
test. Następnie mogą normalnie korzystać z usług mWaitTime
i mCalls
,
Nie zwracając uwagi na to, że można je skonfigurować. Ponieważ
Pola @Option
są ustawiane po utworzeniu klasy, ale przed klasą
Wywoływana jest metoda run
, która umożliwia implementatorom łatwego konfigurowania ustawień domyślnych
lub filtrowanie pól Map
i Collection
, które są
w przeciwnym razie
tylko dołączanie.
Producent
Integrator działa w świecie konfiguracji napisanych w języku XML. Format konfiguracji
umożliwia integratorowi ustawianie (lub dołączanie) wartości do dowolnego pola @Option
. Przykład:
Załóżmy, że integrator chciał zdefiniować test z krótszym czasem oczekiwania, który wywołuje numer domyślny, a także
w ramach długotrwałego testu, który wywołuje różne numery. Można utworzyć parę konfiguracji
może wyglądać tak:
<?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>
Przebieg testowy
Tester ma także dostęp do tych punktów konfiguracyjnych za pośrednictwem konsoli federacji handlowej.
Przede wszystkim uruchomi polecenie (konfigurację i wszystkie jego argumenty) z funkcją
Instrukcja run command <name>
(w skrócie run <name>
).
Oprócz tego można określić dowolną listę argumentów, które są częścią polecenia, co może zastąpić lub
dołączanie do pól określonych przez obiekty cyklu życia w każdej konfiguracji.
Aby przeprowadzić test niskiego opóźnienia z numerami telefonów many-numbers
,
może wykonać:
tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#
Aby uzyskać podobny efekt w odwrotnym kierunku, tester może skrócić czas oczekiwania.
dla testu many-numbers
:
tf> run many-numbers.xml --timeout 5000
Kolejność opcji
Możesz zauważyć, że bazowa implementacja call
to Map
więc po powtórzeniu --call
w wierszu poleceń wszystkie zostaną zapisane.
Opcja timeout
, która bazuje na implementacji long
,
mogą przechowywać tylko jedną wartość. Zapisana zostanie tylko ostatnia określona wartość.
Parametr --timeout 5 --timeout 10
zwróci wartość timeout
zawierającą 10.
Jeśli podstawową implementacją jest List
lub Collection
,
wszystkie wartości zostaną zapisane w kolejności określonej w wierszu poleceń.
Opcje wartości logicznej
Opcje bazowego typu wartości logicznej można ustawić na true
, przesyłając bezpośrednio
nazwa opcji, np. --[option-name]
i można ją ustawić na false
za pomocą parametru
składnię --no-[option-name]
.