期權處理是貿易聯合會模塊化方法的核心。特別是,選項是一種機制,開發人員,集成商和測試運行器可以通過這種機制一起工作,而不必重複彼此的工作。簡而言之,我們對選項處理的實現允許開發人員將Java類成員標記為可配置,此時該成員的值可能會被集成商增加或覆蓋,然後可能被測試運行器增加或覆蓋。此機制適用於所有Java內部類型以及內部類型的任何Map
或Collection
。
注意:選項處理機制僅適用於實現Test Lifecycle中包含的接口之一的類,並且僅在該類由生命週期機器實例化時有效。
開發者
首先,開發人員使用@Option
註釋標記成員。它們指定(至少) name
和description
值,它們指定與該Option關聯的參數名稱,以及使用--help
或--help-all
運行命令時將在TF控制台上顯示的描述。
例如,假設我們要構建一個功能電話測試,該電話測試將撥打各種電話號碼,並期望在連接後從每個號碼接收一系列DTMF音調。
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 }
這是開發人員為該測試設置兩個配置點所需要的。然後,他們可以正常使用mWaitTime
和mCalls
,而不必過多注意它們是可配置的。由於@Option
字段是在實例化類之後但在調用run
方法之前設置的,因此為實現者提供了一種簡便的方法來為其設置默認值或對Map
和Collection
字段執行某種過濾,否則,這些字段將追加-只要。
積分器
集成商在以XML編寫的配置世界中工作。配置格式允許Integrator為任何@Option
字段設置(或附加)一個值。例如,假設Integrator想要定義一個調用默認數字的低延遲測試,以及一個定義各種數字的長時間運行的測試。他們可以創建一對如下所示的配置:
<?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>
測試亞軍
測試運行器還可以通過Trade Federation控制台訪問這些配置點。首先,他們將使用run command <name>
指令(或簡稱為run <name>
)運行Command(即config及其所有參數)。除此之外,他們還可以指定命令中的參數列表,這些參數列表可以替換或附加到每個配置中Lifecycle Objects指定的字段。
要使用many-numbers
電話號碼運行低延遲測試,測試運行器可以執行:
tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#
或者,為了從相反的方向獲得類似的效果,測試運行器可以減少many-numbers
測試的等待時間:
tf> run many-numbers.xml --timeout 5000
期權訂購
您可能會注意到,底層實現的call
選項是Map
因此在命令行上重複--call
時,它們都將被存儲。
選項timeout
(具有long
的基礎實現)只能存儲一個值。因此,將僅存儲指定的最後一個值。 --timeout 5 --timeout 10
將導致包含10的timeout
。
如果將List
或Collection
作為基礎實現,則將按命令行中指定的順序存儲所有值。
布爾選項
可以通過直接傳遞選項名稱將布爾基礎類型的選項設置為true
,例如--[option-name]
並且可以使用語法--no-[option-name]
設置為false
。