Xử lý tuỳ chọn trong Tradefed

Việc xử lý lựa chọn là trọng tâm trong phương pháp theo mô-đun của Trade Federation. Cụ thể, các lựa chọn là cơ chế mà nhà phát triển, Trình tích hợp và Trình chạy kiểm thử có thể phối hợp với nhau mà không cần phải trùng lặp công việc của nhau. Nói một cách đơn giản, việc triển khai tính năng xử lý lựa chọn của chúng tôi cho phép nhà phát triển đánh dấu một thành phần lớp Java là có thể định cấu hình. Tại thời điểm đó, giá trị của thành phần đó có thể được Bộ tích hợp tăng cường hoặc ghi đè, sau đó có thể được Trình chạy kiểm thử tăng cường hoặc ghi đè. Cơ chế này hoạt động cho tất cả các loại nội tại của Java, cũng như cho mọi thực thể Map hoặc Collection của các loại nội tại.

Lưu ý: Cơ chế xử lý lựa chọn chỉ hoạt động đối với các lớp triển khai một trong các giao diện có trong Vòng đời kiểm thử và chỉ khi lớp đó được cơ chế vòng đời khởi tạo.

Nhà phát triển

Để bắt đầu, nhà phát triển đánh dấu một thành viên bằng chú thích @Option. Chúng chỉ định (tối thiểu) các giá trị namedescription. Các giá trị này chỉ định tên đối số được liên kết với Lựa chọn đó và nội dung mô tả xuất hiện trên bảng điều khiển TF khi lệnh được chạy bằng --help hoặc --help-all.

Ví dụ: giả sử chúng ta muốn tạo một kiểm thử điện thoại chức năng quay số nhiều số điện thoại và dự kiến nhận được một chuỗi âm DTMF từ mỗi số sau khi kết nối.

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
    }

Đó là tất cả những gì nhà phát triển cần làm để thiết lập 2 điểm cấu hình cho kiểm thử đó. Sau đó, họ có thể tắt và sử dụng mWaitTimemCalls như bình thường mà không cần chú ý nhiều đến việc chúng có thể định cấu hình. Vì các trường @Option được đặt sau khi lớp được khởi tạo, nhưng trước khi phương thức run được gọi, nên điều này giúp người triển khai dễ dàng thiết lập giá trị mặc định hoặc thực hiện một số loại hoạt động lọc trên các trường MapCollection (nếu không thì chỉ có thể thêm vào).

Nhà tích hợp

Trình tích hợp hoạt động trong thế giới cấu hình, được viết bằng XML. Định dạng cấu hình cho phép Trình tích hợp đặt (hoặc thêm) một giá trị cho bất kỳ trường @Option nào. Ví dụ: giả sử Trình tích hợp muốn xác định một kiểm thử có độ trễ thấp, gọi số mặc định, cũng như một kiểm thử chạy trong thời gian dài, gọi nhiều số. Họ có thể tạo một cặp cấu hình có dạng như sau:

<?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>

Trình chạy kiểm thử

Trình chạy kiểm thử cũng có quyền truy cập vào các điểm cấu hình này thông qua bảng điều khiển Trade Federation. Trước hết, họ chạy một lệnh (tức là một cấu hình và tất cả các đối số của lệnh đó) bằng chỉ dẫn run command <name> (hoặc run <name> cho ngắn gọn). Ngoài ra, họ có thể chỉ định mọi danh sách đối số là một phần của lệnh, có thể thay thế hoặc thêm vào các trường do đối tượng vòng đời chỉ định trong mỗi cấu hình.

Để chạy kiểm thử có độ trễ thấp bằng số điện thoại many-numbers, Trình chạy kiểm thử có thể thực thi:

tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#

Hoặc để có được hiệu ứng tương tự từ hướng ngược lại, Trình chạy kiểm thử có thể giảm thời gian chờ cho kiểm thử many-numbers:

tf> run many-numbers.xml --timeout 5000

Thứ tự lựa chọn

Bạn có thể nhận thấy rằng việc triển khai cơ bản của lựa chọn callMap, vì vậy, khi bạn lặp lại --call trên dòng lệnh, tất cả các lựa chọn này sẽ được lưu trữ.

Lựa chọn timeout (có chế độ triển khai cơ bản là long) chỉ có thể lưu trữ một giá trị. Vì vậy, chỉ giá trị được chỉ định gần đây nhất mới được lưu trữ. --timeout 5 --timeout 10 kết quả trong timeout chứa 10.

Trong trường hợp List hoặc Collection là cách triển khai cơ bản, tất cả các giá trị sẽ được lưu trữ theo thứ tự được chỉ định trên dòng lệnh.

Các lựa chọn boolean

Bạn có thể đặt các lựa chọn của loại cơ bản boolean thành true bằng cách truyền trực tiếp tên lựa chọn, ví dụ: --[option-name] và có thể đặt thành false bằng cú pháp --no-[option-name].

Xem thêm

Truyền các lựa chọn cho bộ và mô-đun