Để hiểu phần này, trước tiên hãy nghiên cứu thẻ Tradefeed @Lựa chọn.
Các lựa chọn điển hình trong Tradefeed cho phép các lớp kiểm thử nhận được thêm thông tin từ cấu hình XML hoặc dòng lệnh. Tính năng này cho phép bạn để thực hiện thêm một bước và giải quyết một số thông tin bổ sung này nếu nếu cần.
Ví dụ về lựa chọn tệp
Tệp ví dụ @option:
@Option(name = 'config-file')
private File mConfigFile;
Bạn có thể thiết lập thông tin trên thông qua cấu hình XML:
<option name="config-file" value="/tmp/file" />
hoặc thông qua lệnh:
--config-file /tmp/file
Mô tả
Tính năng này cho phép bạn phân giải @Options kiểu tệp được nhập từ xa thành tệp cục bộ được cung cấp liền mạch từ góc độ người dùng.
Để làm được điều này, bạn cần chỉ định tệp bằng một đường dẫn kiểu từ xa. Ví dụ:
--config-file gs://bucket/tmp/file
Đường dẫn này trỏ đến một tệp trong bộ chứa Google Cloud Storage (GCS) nơi tệp đó được lưu trữ. Bị đánh đổi khi thấy đường dẫn từ xa đó, sẽ tìm cách tải tệp xuống
cục bộ và gán mã đó cho @Option. Điều này dẫn đến việc biến mConfigFile
hiện trỏ đến phiên bản cục bộ của tệp mà kiểm thử có thể sử dụng.
Nếu không thể tải tệp từ xa xuống vì bất kỳ lý do gì, Tradefeed sẽ gửi ra một
ConfigurationException
sẽ ngăn kiểm thử chạy. Chúng tôi xem xét
thiếu các tệp đó là một lỗi nghiêm trọng do một số cấu phần phần mềm kiểm thử cũng sẽ bị
bị thiếu.
Sử dụng tham số truy vấn
Bạn có thể thêm tham số truy vấn vào URL bằng ?
. Ví dụ: gs://bucket/path?unzip=true
. Khoá/giá trị unzip=true
sẽ có trong
IRemoteFileResolver
giao diện
trong quá trình triển khai.
Có 2 hành vi tích hợp sẵn:
- giải nén: Nếu bạn đặt thành
true
và tệp đã tải xuống là tệp zip, đã tự động được giải nén vào một vị trí tạm thời. Ví dụ:?unzip=true
- không bắt buộc: Mặc định là
false
. Nếu bạn đặt thànhtrue
nhưng độ phân giải không thành công, thì sẽ không gửi một trường hợp ngoại lệ và sẽ không thay thế tệp. Ví dụ:?optional=true
Bạn cũng có thể truyền các đối số truy vấn chung thông qua --dynamic-download-args key=value
để chuyển khoá/giá trị tới tất cả các lần tải xuống động trong
lời gọi.
Giao thức được hỗ trợ
Các giao thức được hỗ trợ chính thức và định dạng tương ứng là:
- Google Cloud Storage, giao thức:
gs
, định dạng:gs://<bucket name>/path
- Tệp cục bộ, giao thức:
file
, định dạng:file:/local/path
- Đường liên kết http, giao thức:
http
, định dạng:http://url
- Đường liên kết https, giao thức:
https
, định dạng:https://url
Các điểm hạn chế
Độ phân giải động của @Option hiện chỉ hỗ trợ một số giao thức và vị trí để tải xuống. Độ phân giải của @Option hiện là chỉ được bật cho cấu hình XML Tradefeed chính.
Nếu chạy dưới dạng một bộ, các mô-đun hiện tại (AndroidTest.xml
) sẽ không phân giải được
tệp theo mặc định.
Điều này nhằm ngăn các mô-đun tạo ra một số phần phụ thuộc không xác định. Chiến dịch này
có thể thoát bằng cách sử dụng --enable-module-dynamic-download
ở cấp bộ,
nhưng các bộ công cụ lớn như Bộ kiểm tra tính tương thích
(CTS) và Bộ kiểm thử nhà cung cấp
(VTS) sẽ không bật chế độ này.
Triển khai giao thức mới
Các giao thức được hỗ trợ đã được triển khai trong Trade của
IRemoteFileResolver
giao diện
,xác định thẻ ngắn của giao thức sẽ được so khớp trong
đường dẫn tệp thông qua getSupportedProtocol
. Ví dụ: gs
được dùng cho thuộc tính
Giao thức Google Cloud Storage. Giao diện đề xuất để triển khai là
#resolveRemoteFiles(RemoteFileResolverArgs)
là giá trị dài hạn
giao diện được duy trì.
Các giao thức đã triển khai có thể được thêm vào khai thác META-INF các dịch vụ để chính thức bật dịch vụ hỗ trợ.