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 xử lý tuỳ 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 trong 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 Nhà tích hợp tăng cường hoặc ghi đè, rồi sau đó có thể được tăng cường hoặc ghi đè bằng Trình chạy thử nghiệm. Cơ chế này phù hợp với mọi loại hàm nội tại Java cũng như bất kỳ Map hoặc Collection của kiểu nội tại.

Lưu ý: Cơ chế xử lý tuỳ chọn chỉ hoạt độ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 nhóm này chỉ định (tối thiểu) các giá trị namedescription. chỉ định tên đối số được liên kết với Tuỳ chọn đó và nội dung mô tả sẽ được hiển thị trên bảng điều khiển TF khi chạy lệnh 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 chức năng trên điện thoại, sẽ gọi điện số điện thoại và sẽ nhận được một chuỗi nhạc DTMF từ mỗi số sau đó 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ì cần thiết để Nhà phát triển thiết lập hai điểm cấu hình cho điều đó thử nghiệm. Sau đó, chúng có thể tắt và sử dụng mWaitTimemCalls như bình thường, mà không 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 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ì sẽ chỉ thêm dữ liệu.

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ó thể 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>

Chạy thử

Người chạy Test Runner 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 của Liên đoàn thương mại. Trước tiên, chúng sẽ chạy một Lệnh (nghĩa là một cấu hình và tất cả các đối số của nó) với run command <name> lệnh (hoặc run <name> gọi tắt). 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 Đối tượng Lifecycle chỉ định trong mỗi cấu hình.

Để chạy thử nghiệm độ trễ thấp với số điện thoại many-numbers, Người chạy thử nghiệm 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ờ đối với phép kiểm thử many-numbers:

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

Sắp xếp theo lựa chọn

Bạn có thể nhận thấy rằng cách triển khai cơ bản cho tuỳ chọn callMap vì vậy, khi --call lặp lại trên dòng lệnh, chúng sẽ đượ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ỉ có giá trị cuối cùng được chỉ định mới được lưu trữ. --timeout 5 --timeout 10 sẽ cho kết quả timeout chứa 10.

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ị sẽ được lưu trữ, theo thứ tự được chỉ định trên dòng lệnh.

Tùy 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

Chuyển các lựa chọn sang bộ và mô-đun