Tôi biết có rất nhiều câu hỏi về vấn đề này nhưng tôi không thể tìm thấy bất kỳ điều gì để trợ giúp tôi: (Android: Espresso không đợi cho đến khi phân đoạn hoặc hoạt động được hiển thị để mọi thử nghiệm không thành công
Tôi đã cố gắng sử dụng Espresso để tạo UI-Test cho một ứng dụng android.Sau khi đánh bại các vấn đề phụ thuộc (vì một số thư viện được bao gồm hai lần trong các phiên bản khác nhau như phụ thuộc từ các thư viện khác) Tôi vẫn không thể tạo các bài kiểm tra ...
I biết về IdlingResource nhưng khi tôi đọc, espresso chờ đợi ra khỏi hộp cho đến khi chủ đề chính và AsyncTaskPool là nhàn rỗi trước khi chạy bất kỳ bài kiểm tra nào.Để liên lạc với nó, tôi crated một ứng dụng đơn giản có chứa hai hoạt động, một splashscreen và một mainactivity. Các Splashscreen chứa một cái gì đó như thế này vì đã chờ đợi ba giây trước khi bắt đầu MainActivity
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);
startActivity(intent);
}
}, 3000);
Tôi cũng cố gắng sử dụng AsyncTask cho điều này nhưng không có vẻ làm việc một cách chính xác vì mỗi thử nghiệm thất bại.
Bài kiểm tra chỉ kiểm tra nếu một TextView có chứa một văn bản định nghĩa được hiển thị trên kết quả bằng cách:
onView(withText("DummyText")).check(matches(notNullValue()));
Tôi nghĩ rằng nó sẽ không thể là khó khăn để tạo ra một thử nghiệm đơn giản ...
Bởi vì tôi đã thử nghiệm chống lại api> = 16 Tôi cần cà phê espresso. Chỉ cần cho tôi tôi đã kiểm tra nó bằng cách sử dụng uiAutomator (Tôi biết nó cho api> = 18) nhưng có logic thông minh để chờ đợi cho một cái gì đó được hiển thị ..... và hoạt động hoàn hảo ...
Cảm ơn lời khuyên của bạn! tôi nhận nó làm việc sau khi tôi tuyên bố tham số thứ ba của sự cai trị như 'false': '@Rule ActivityTestRule công mMainActivity = new ActivityTestRule <> (SplascreenActivity.class, đúng, sai); ' Làm như vậy, tôi có thể xác định hành vi như ví dụ . DoNothing() khi (mDeviceService) .getDevices '();' và sau đó bắt đầu hoạt động bằng tay bằng cách sử dụng 'mSplashscreenActivity.launchActivity (null); '. Tôi cũng đã thay đổi _Handler_ bằng _AsyncTask_ và biết công việc kiểm tra như mong đợi có chứa đang chờ, kiểm tra, v.v. –
grumpyshoe
Thực sự tuyệt vời! Làm tốt lắm! – sunlover3
@grumpyshoe Tôi cũng phải đối mặt với cùng một vấn đề, Trong ứng dụng của tôi, chúng tôi có một màn hình giật gân tự động điều hướng người dùng đến màn hình đăng nhập nhưng thử nghiệm của tôi không chờ đợi để điều hướng đến Đăng nhập và bắt đầu tìm kiếm. Bạn có thể giúp tôi không. – Krishnakant