Việc xử lý tuỳ chọn là trọng tâm của phương pháp mô-đun của Trade Federation. Cụ thể, các tuỳ chọn là cơ chế mà theo đó, nhà phát triển, Công ty tích hợp và Trình chạy kiểm thử có thể làm việc cùng nhau mà không 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 của chúng tôi về việc 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 Công ty tích hợp tăng cường hoặc ghi đè và có thể được Trình chạy kiểm thử tăng cường hoặc ghi đè sau đó. 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ý tuỳ 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 khởi tạo bởi cơ chế 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 bằng chú thích @Option.
Họ chỉ định (tối thiểu) các giá trị name và description, trong đó
chỉ định tên đối số được liên kết với Tuỳ 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 bài kiểm thử chức năng về điện thoại, trong đó quay nhiều số điện thoại và dự kiến sẽ 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 để thiết lập 2 điểm cấu hình cho bài kiểm thử đó. Sau đó, họ có thể tiếp tục và sử dụng mWaitTime và mCalls 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 thiết lập 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 lọc trên các trường Map và Collection. Nếu không, các trường này chỉ được phép thêm.
Công ty tích hợp
Công ty tích hợp làm việc trong thế giới cấu hình được viết bằng XML. Định dạng cấu hình cho phép Công ty tích hợp thiết lập (hoặc thêm) một giá trị cho bất kỳ trường @Option nào. Ví dụ: giả sử Công ty tích hợp muốn xác định một bài kiểm thử có độ trễ thấp, trong đó gọi số mặc định, cũng như một bài kiểm thử chạy trong thời gian dài, trong đó gọi nhiều số. Họ có thể tạo một cặp cấu hình có thể trô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 cấu hình đó) bằng hướng 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 bài kiểm thử có độ trễ thấp với 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ó hiệu ứng tương tự theo hướng ngược lại, Trình chạy kiểm thử có thể giảm thời gian chờ cho bài 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 việc triển khai cơ bản của tuỳ chọn call 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ó 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 sẽ dẫn đến 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.
Tuỳ chọn boolean
Bạn có thể đặt các tuỳ chọn của loại cơ bản boolean thành true bằng cách trực tiếp truyền tên tuỳ chọn, ví dụ: --[option-name] và có thể đặt thành false bằng cú pháp --no-[option-name].