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ị name
và description
.
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 mWaitTime
và mCalls
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 Map
và Collection
, 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 call
là Map
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]
.