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