Cách được đề xuất để thực hiện điều này theo chương trình là gì?
Tùy chọn duy nhất có thể là chạy lệnh ADB adb shell pm clear packagetrước khi thử nghiệm. Vấn đề lớn nhất là loại đau đầu kết hợp kiểm tra thực thi và lệnh shell.
Tuy nhiên, chúng tôi (tại Mediafe) đã đưa ra một số giải pháp có thể phù hợp với bạn trên thiết bị không được phân phối thông thường. Tất cả bạn cần làm là thêm một chú thích. Tất cả phần còn lại được thực hiện bằng cách chạy tập lệnh bash đơn giản .
Chỉ cần thêm @ClearDatachú thích trước BẤT K of bài kiểm tra nào của bạn và tada 🎉, lệnh xóa ADB sẽ được thực thi trước khi thực hiện kiểm tra.
Đây là một ví dụ về thử nghiệm như vậy:
@Test
@ClearData
public void someTest() {
// your test
}
Ý tưởng là như sau
- Đọc tất cả các bài kiểm tra bằng cách sử dụng
adb shell am instrument -e log true
- Xây dựng kế hoạch thực hiện bằng cách phân tích cú pháp đầu ra từ (1)
- Chạy dòng kế hoạch thực hiện theo dòng
Sử dụng cùng một ý tưởng, đây là tất cả các tùy chọn bạn có thể dễ dàng hỗ trợ:
- Xóa dữ liệu
- Xóa thanh thông báo
- Tham số hóa
- Lọc và chạy theo thẻ
Chỉ sử dụng chú thích. Như thế này:
@Test
@ClearData
@Tags(tags = {"sanity", "medium"})
@Parameterized.Repeat(count = 3)
public void myTest() throws Exception {
String param = params[index];
// ...
}
Tặng kem! Đối với mỗi bài kiểm tra thất bại:
- Thu thập Logcat + stacktrace
- Quay video (mp4)
- Đổ DB (sqlite)
- Kết xuất tùy chọn chia sẻ mặc định (xml)
- Thu thập các tập tin dumpsys như: pin, netstats và khác.
Nói chung, thật dễ dàng để thêm nhiều tùy chọn hơn, vì các bài kiểm tra được thực hiện lần lượt từ tập lệnh bash thay vì từ tác vụ lớp.
📗 Các bài viết trên blog đầy đủ : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
📘 Mã nguồn với các ví dụ : https://github.com/medisafe/run-android-tests
Hy vọng câu trả lời này 6 năm câu hỏi;)