交易期權處理

期權處理是貿易聯合會模塊化方法的核心。特別是,選項是一種機制,開發人員,集成商和測試運行器可以通過這種機制一起工作,而不必重複彼此的工作。簡而言之,我們對選項處理的實現允許開發人員將Java類成員標記為可配置,此時該成員的值可能會被集成商增加或覆蓋,然後可能被測試運行器增加或覆蓋。此機制適用於所有Java內部類型以及內部類型的任何MapCollection

注意:選項處理機制僅適用於實現Test Lifecycle中包含的接口之一的類,並且僅在該類由生命週期機器實例化時有效

開發者

首先,開發人員使用@Option註釋標記成員。它們指定(至少) namedescription值,它們指定與該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
    }

這是開發人員為該測試設置兩個配置點所需要的。然後,他們可以正常使用mWaitTimemCalls ,而不必過多注意它們是可配置的。由於@Option字段是在實例化類之後但在調用run方法之前設置的,因此為實現者提供了一種簡便的方法來為其設置默認值或對MapCollection字段執行某種過濾,否則,這些字段將追加-只要。

積分器

集成商在以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

如果將ListCollection作為基礎實現,則將按命令行中指定的順序存儲所有值。

布爾選項

可以通過直接傳遞選項名稱將布爾基礎類型的選項設置為true ,例如--[option-name]並且可以使用語法--no-[option-name]設置為false

也可以看看

將選項傳遞給套件和模塊