Xử lý quyền chọn trong Tradefeed

Cách xử lý lựa chọn là trọng tâm trong cách tiếp cận theo mô-đun của Liên đoàn Thương mại. Cụ thể, các lựa chọn là cơ chế mà nhà phát triển, Nhà tích hợp và Người chạy thử nghiệm có thể làm việc cùng nhau mà không cần phải sao ché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ý tuỳ chọn cho phép nhà phát triển đánh dấu một thành viên lớp Java là có thể định cấu hình, tại thời điểm đó, giá trị của thành viên đó có thể được Trình 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ỉ áp dụng cho các lớp triển khai một trong các giao diện có trong Vòng đời kiểm thử (Test Lifecycle) và chỉ khi lớp đó được được tạo thực thể bởi máy móc vòng đời.

Nhà phát triển

Để bắt đầu, nhà phát triển đánh dấu một thành viên có Chú giải @Option. Các giá trị này chỉ định (tối thiểu) các giá trị namedescription, giúp chỉ định tên đối số liên kết với Tuỳ chọn đó và nội dung mô tả hiển thị 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 xây dựng một thử nghiệm điện thoại chức năng quay được nhiều số điện thoại và muốn nhận một chuỗi âm DTMF từ mỗi số sau số đó 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 thiết lập hai điểm cấu hình cho điều đó thử nghiệm. 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 các thành phần này có thể định cấu hình. Vì Các trường @Option được đặt sau khi lớp này được tạo thực thể, nhưng trước khi Phương thức run được gọi, việc này cung cấp một cách dễ dàng để các trình triển khai thiết lập các giá trị mặc định cho hoặc thực hiện loại lọc nào đó trên các trường MapCollection, tức là nếu không thì chỉ 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ử Nhà tích hợp cũng muốn xác định kiểm thử độ trễ thấp hơn để gọi số mặc định là một thử nghiệm lâu dài để gọi nhiều số khác nhau. 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 tiên, các lệnh này 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 cấu hình đó) bằng lệnh run command <name> (viết tắt là run <name>). Ngoài ra, các thao tác này có thể chỉ định bất kỳ danh sách đối số nào là một phần của lệnh. Lệnh này có thể thay thế hoặc thêm vào các trường do các đối tượng vòng đời chỉ định trong mỗi cấu hình.

Để chạy kiểm thử độ 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 thử nghiệm có thể giảm thời gian chờ dành cho kiểm thử many-numbers:

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

Thứ tự tuỳ chọn

Bạn có thể nhận thấy rằng tuỳ chọn call cơ bản để triển khai là Map. Vì vậy, khi lặp lại --call trên dòng lệnh, tất cả các tuỳ chọn này đều được lưu trữ.

Tuỳ chọn timeout có phương thức triển khai cơ bản là long, chỉ có thể lưu trữ một giá trị. Vì vậy, chỉ giá trị cuối cùng được chỉ định mới được lưu trữ. --timeout 5 --timeout 10 cho ra kết quả timeout chứa 10 kết quả.

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

Tuỳ chọn boolean

Bạn có thể đặt các tuỳ chọn thuộc loại boolean cơ bản thành true bằng cách truyền trực tiếp phương thức tên tuỳ chọn (ví dụ: --[option-name]) và có thể đặt thành false bằng cách sử dụng cú pháp --no-[option-name].

Xem thêm

Pass các lựa chọn để suite và các mô-đun